无法绑定到'routerLink',因为它不是'a'的已知属性

cob*_*nks 18 angular2-routing angular

我正在将我们的一个应用程序从rc4更新到angular2.0.0,我在运行时遇到模板解析错误.这是我的视图模板:

<div *ngFor="let widget of widgets" class="col-xs-3 quick-link">
    <a [routerLink]="['/Tile', widget.WidgetRoute.Feature, widget.WidgetRoute.SubFeature]">
        <div class="tile-icon">
            <span [className]="widget.IconCssClass"></span>
            <span *ngIf="widget.BadgeNumber > 0" class="badge">{{widget.BadgeNumber}}</span>
        </div>
        <h4>{{widget.Text}}</h4>
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)

错误发生在routerlink上.这是错误:

Can't bind to 'routerLink' since it isn't a known property of 'a'. ("

    <div *ngFor="let widget of widgets" class="col-xs-3 quick-link">
        <a [ERROR ->][routerLink]="['/Tile', widget.WidgetRoute.Feature, widget.WidgetRoute.SubFeature]">
            <di"): LdrComponent@4:19
Can't bind to 'ngIf' since it isn't a known property of 'span'. ("tile-icon">
                <span [className]="widget.IconCssClass"></span>
                <span [ERROR ->]*ngIf="widget.BadgeNumber > 0" class="badge">{{widget.BadgeNumber}}</span>
            </div>
     "): LdrComponent@7:22
Run Code Online (Sandbox Code Playgroud)

routerLink对我来说似乎没有变形......我做错了什么?

Hus*_*vic 32

问题是您忘记添加RouterModuleNgModule组件中.在RC中,这被添加到了@Component({directives: [ROUTER_DIRECTIVES]}),然而,这现在被移入@NgModule({ imports: [RouterModule]}).

定义路径时,您将导入的组件之一将是RouterModule您将用于调用的组件forRootforChild.导入路径时,将自动导入.

因此,您将以这种方式获得RouterLink,或者通过直接导入到imports属性中@NgModule.

  • @cobolstinks 不,“声明”不是继承的,这包括组件、指令和管道。如果您需要在模块中使用其中任何一个,那么您需要将包含的模块导入到该模块中。就是这样。 (2认同)
  • 好的,谢谢,事实证明我需要在他们自己的路由配置文件中定义我的模块路由并将其导入每个模块.它似乎现在工作.谢谢你让我沿着正确的道路走下去. (2认同)
  • 没有正确的解决方案,我一直发现这个错误1.000次.如果你正在使用webpack.角度在默认生产中出现此错误!这是由于html-loader中的html-minifier,导致属性被强制转换为小写!添加caseSensitive:true到html-loader选项请参阅:github.com/SamanthaAdrichem/webpack-3.9.1-splitted-config-angular用于工作角度5 + webpack 3.9配置 (2认同)