无法绑定到“routerLink”,因为它不是已知的本机属性[重复]

Posted

技术标签:

【中文标题】无法绑定到“routerLink”,因为它不是已知的本机属性[重复]【英文标题】:Can't bind to 'routerLink' since it isn't a known native property [duplicate] 【发布时间】:2016-06-30 20:57:18 【问题描述】:

当我尝试添加 hashlocationstrategy 时发生此错误

boot.ts

///<reference path="../typings/browser.d.ts"/>

import  bootstrap  from "angular2/platform/browser";
import  RootComponent  from "./root.component";
import  ROUTER_PROVIDERS, ROUTER_DIRECTIVES, LocationStrategy, HashLocationStrategy from "angular2/router";
import  PLATFORM_DIRECTIVES, provide, enableProdMode  from "angular2/core";
import  HTTP_PROVIDERS  from "angular2/http";
import  FirebaseService  from "./shared/firebase.service";
import  Environment  from "./config/environment";

if (Environment === "production") 
  enableProdMode();



bootstrap(RootComponent, [
  FirebaseService,
  ROUTER_PROVIDERS,
  HTTP_PROVIDERS,
  provide(
    [PLATFORM_DIRECTIVES, useValue: [ROUTER_DIRECTIVES], multi: true],
    [LocationStrategy, useClass: HashLocationStrategy]
  )
])
  .catch(err => console.error(err));

认为这是因为我同时使用平台指令和位置策略的语法是错误的。有什么线索吗?

【问题讨论】:

【参考方案1】:

PLATFORM_DIRECTIVESLocationStrategy 需要单独的 provide()

bootstrap(RootComponent, [
  FirebaseService,
  ROUTER_PROVIDERS,
  HTTP_PROVIDERS,

  provide(PLATFORM_DIRECTIVES, useValue: ROUTER_DIRECTIVES, multi: true),
  provide(LocationStrategy, useClass: HashLocationStrategy)

  .catch(err => console.error(err));

【讨论】:

hmm 然后我在没有括号 Supplied parameters do not match any signature of call target. 的 TS lint 中得到它,它不会编译 我更新了答案。 这很好,谢谢!【参考方案2】:

您可以尝试以这种方式引导您的应用程序:

bootstrap(RootComponent, [
  FirebaseService,
  ROUTER_PROVIDERS,
  HTTP_PROVIDERS,
  provide(
    PLATFORM_DIRECTIVES, useValue: [ROUTER_DIRECTIVES], multi: true),
  provide(LocationStrategy, useClass: HashLocationStrategy)
])
.catch(err => console.error(err));

看到这个 plunkr:https://plnkr.co/edit/6fXmPi?p=preview

【讨论】:

嗯,你能检查一下这个线程吗?它是我的,它在没有哈希策略的情况下工作http://***.com/questions/35878966/router-directives-in-two-places-for-same-purpose/35880222#35880222 是的,你是对的。我错过了你问题的一部分。我认为您没有以正确的方式使用 provide 函数......我相应地更新了我的答案。 感谢您的回答,但 Günter Zöchbauer 已经回答了同样的问题;o 是的,我在编辑我的答案后看到了这一点;-) 不客气,很高兴看到您得到了问题的答案! @Günter 更快 ;-)

以上是关于无法绑定到“routerLink”,因为它不是已知的本机属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法绑定到“routerLink”,因为它不是“a”的已知属性 [重复]

模板解析错误:无法绑定到“routerLink”,因为它不是“a”的已知属性 [重复]

无法绑定到“routerLink”,因为它不是已知的本机属性[重复]

无法绑定到“routerLink”,因为即使在导入 RouterModule 之后它也不是已知属性

如何解决错误 NG8002:无法绑定到“routerLink”,因为它不是“a”的已知属性。?

10 个规范,10 个失败 - 无法绑定到“routerLink”,因为它不是“按钮”的已知属性 [重复]