Mój routing w aplikacjach angular2 działa dobrze. Ale mam zamiar utworzyć na podstawie tego routeLink :
Oto mój routing:
const routes: RouterConfig = [
{ path:'home' , component: FormComponent },
{ path:'about', component: AboutComponent },
{ path:'**' , component: FormComponent }
];
A oto linki, które stworzyłem:
<ul class="nav navbar-nav item">
<li>
<a routerLink='/home' routerLinkActive="active">Home</a>
</li>
<li>
<a routerLink='/about' routerLinkActive="active">About this</a>
</li>
</ul>
Spodziewam się, że po ich kliknięciu przechodzi do szanowanego komponentu, ale nic nie wykonują?
[routerLink]='[/home']
? Jakiej wersji Angular2 i wersji routera używasz?[routerLink]="['/home']"
directives: [ROUTER_DIRECTIVES],
do metadanych swojego komponentu. Bez tego Angular nie będzie wiedział, jak analizować plikirouterLink
s.Odpowiedzi:
Kod, który tam pokazujesz, jest absolutnie poprawny.
Podejrzewam, że problem polega na tym, że nie importujesz RouterModule (czyli tam, gdzie jest zadeklarowany RouterLink) do modułu, który używa tego szablonu.
Miałem podobny problem i zajęło mi to trochę czasu, ponieważ ten krok nie jest wymieniony w dokumentacji.
Przejdź więc do modułu, który deklaruje komponent za pomocą tego szablonu i dodaj:
następnie dodaj go do importu modułów np
Oprócz poprawnych instrukcji importu będziesz potrzebować również miejsca na pokazanie tego routerLink, które znajduje się w
<router-outlet></router-outlet>
elemencie, więc również musi być umieszczone gdzieś w znaczniku HTML, aby router wiedział, gdzie wyświetlać te dane.źródło
nie zapomnij o tym, aby dodać to poniżej w swoim szablonie:
źródło
Spróbuj zmienić linki, jak poniżej:
Dodaj również w nagłówku pliku index.html:
<base href="https://stackoverflow.com/">
źródło
użyj go w ten sposób, aby uzyskać informacje o mroe przeczytaj ten temat
źródło
routerLink
powinien działać ;-)"@angular/router": "~3.4.0"
. Twoje zdrowie!Zdaję sobie sprawę, że to pytanie jest już dość stare i najprawdopodobniej już je naprawiłeś, ale chciałbym opublikować tutaj jako odniesienie dla każdego, kto znajdzie ten post podczas rozwiązywania tego problemu, że tego rodzaju rzecz wygrała nie działa, jeśli tagi kotwicy znajdują się w pliku Index.html. Musi znajdować się w jednym z komponentów
źródło
Linki są błędne, musisz to zrobić:
Możesz przeczytać ten samouczek
źródło
Użyłem routerlink zamiast routerLink .
źródło
Dla każdego mającego ten błąd po rozdzieleniu modułów sprawdź swoje trasy, zdarzyło mi się co następuje:
public-routing.module.ts:
app-routing.module.ts:
Przejdź
{ path: '**', redirectTo: 'home' }
do swojego AppRoutingModule:public-routing.module.ts:
app-routing.module.ts:
źródło
Jest też inny przypadek, który pasuje do tej sytuacji. Jeśli w swoim przechwytywaczu sprawiłeś, że zwraca wartość inną niż logiczna, wynik końcowy jest taki.
Na przykład próbowałem zwrócić
obj && obj[key]
rzeczy. Po chwili debugowania zdaję sobie sprawę, że muszę ręcznie przekonwertować to na typ boolowskiBoolean(obj && obj[key])
, aby umożliwić kliknięcie.źródło
Idąc za próbką roboczą , znalazłem rozwiązanie dla przypadku czystego komponentu:
źródło
W przypadku niezbyt ostrych oczu, takich jak moje,
href
zamiast tegorouterLink
potrzebowałem kilku wyszukiwań, aby to zrozumieć #facepalm.źródło