Маршрутизатор Angular2 RC5 3.0.0 - нет ссылки на <a> в компоненте из общей библиотеки

У меня проблема с сгенерированной маршрутизацией в компоненте из общего модуля.

Вот плункер.

В меню навигации 3 ссылки. Когда я нажимаю "Информация", страница отображается правильно, и там должна быть ссылка на " Здоровье". Но Angular не разбирает шаблон и <a> у тега нет добавленного атрибута href,

Тот же HTML-код

<a routerLink="/health">Health</a>

используется как в меню (где он ведет себя правильно), так и в LandingComponent шаблон.

Что и куда я должен импортировать, чтобы обе ссылки работали?

2 ответа

Решение

Ваш LandingComponent является частью SharedModule. Таким образом, вы должны импортировать RouterModule в SharedModule, чтобы заставить ссылку работать в вашем LandingComponent, вот правильный код для SharedModule:

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

import { LandingComponent } from './landing.component';

@NgModule({
    imports: [RouterModule],
    exports: [LandingComponent],
    declarations: [LandingComponent]
})
export class SharedModule { }

Это будет работать, но более обходной, Дмитрий Нехайчик, ответ правильный.

import { Component, Input } from '@angular/core';
import { Router } from '@angular/router';
@Component({
    selector: 'landing',
    template: `
<div class="fgnp-panel">
    <h1>Page: {{pageTitle}}</h1>
    <a link (click)="router.navigate(['/Health'])" routerLinkActive="active">Health</a>
</div>`,
    styles: [`  a:link {text-decoration: none; color: blue;}a:visited {color: #EE9A00;}
                a:hover { text-decoration: underline;cursor: pointer;}`]
})
export class LandingComponent {
    @Input()
    pageTitle: string = '';

    constructor(private router: Router) { }
}
Другие вопросы по тегам