我有一个我在Angular2应用程序中使用的WidgetComponent。该应用程序实际上是两个不同的应用程序:桌面版(启动桌面)和移动版(启动 - 移动)。 WidgetComponent我已经在桌面版中成功使用,现在我正在研究移动版本,我想在移动版本中使用WidgetComponent。
但是,当我尝试在移动版本中使用此WidgetComponent时,我收到此错误:
browser_adapter.ts:78错误:未捕获(在承诺中):TypeError:无法读取null的属性'query' at resolvePromise(zone.js:538) 在zone.js:515 在ZoneDelegate.invoke(zone.js:323) at Object.NgZoneImpl.inner.inner.fork.onInvoke(ng_zone_impl.ts:67) 在ZoneDelegate.invoke(zone.js:322) 在Zone.run(zone.js:216) 在zone.js:571 在ZoneDelegate.invokeTask(zone.js:356) at Object.NgZoneImpl.inner.inner.fork.onInvokeTask(ng_zone_impl.ts:56) 在ZoneDelegate.invokeTask(zone.js:355)
在应用的桌面版本中不会发生此错误。
所以我尝试了一个实验。我克隆了WidgetComponent,即创建了两个相同的版本 - 相同的代码和标记 - 如下所示:
app/shared/widget
widget.html
widget.component.ts
app/shared/widget2
widget.html
widget.component.ts
现在,在我的移动应用程序中,我按如下方式引用小部件组件:
import { Component } from "@angular/core";
import { WidgetComponent } from "./../../shared/widget2/widget.component";
// import { WidgetComponent } from "./../../shared/widget/widget.component";
@Component({
directives: [WidgetComponent],
selector: "some-component",
templateUrl: "app/path/some.html"
})
export class SomeComponent {
constructor() {}
}
IT工作!
但是,如果我执行以下操作,则不起作用:
import { Component } from "@angular/core";
// import { WidgetComponent } from "./../../shared/widget2/widget.component";
import { WidgetComponent } from "./../../shared/widget/widget.component";
@Component({
directives: [WidgetComponent],
selector: "some-component",
templateUrl: "app/path/some.html"
})
export class SomeComponent {
constructor() {}
}
我真的很困惑这里发生了什么。有什么想法吗?