我正在尝试学习Angular,并遇到了可能是一个非常简单的问题。为什么我的Angular2控件需要作为提供者包含在内?
我写了一个名为“PageSelectorComponent”的网格分页的子组件。该组件只需要一个总记录数并计算并显示页面链接(该组件中不使用提供程序)。我将这个组件嵌入到另一个名为“TestComponent”的组件中。
PageSelectorComponent和Test Component包含在我的app.module.ts文件的delarations部分。
我的问题是,我得到以下错误:
ERROR Error: Uncaught (in promise): Error: No provider for PageSelectorComponent!
如果我添加PageSelectorComponent到app.module.ts一切工作正常的供应商部分除了现在我得到的分量两个实例 。这导致我的订阅不起作用。
我已经查看了如何声明PageSelectorComponent和TestComponent,但没有看到区别。
为什么该应用程序抱怨没有将PageSelectorComponent列为提供程序?
这里是我的app.modules.ts的NgMoudle部分:
@NgModule({
declarations: [
AppComponent,
NavigationComponent,
HomeComponent,
PageSelectorComponent,
TestComponent,
],
imports: [
BrowserModule,
RoutingModule,
],
providers: [
PageSelectorComponent // App complains if I leave this out but now I get 2 instances of the component.
],
bootstrap: [AppComponent]
})
这里是PageSelectorComponent定义:
@Component({
moduleId: module.id,
selector: 'app-page-selector',
templateUrl: './page-selector.component.html',
styleUrls: ['./page-selector.component.css'],
})
export class PageSelectorComponent {
// member variables declared here
.
.
private static instanceNum: number = 0; // TOOD: debugging
constructor() {
PageSelectorComponent.instanceNum += 1;
console.log(`page-selector instance number ${PageSelectorComponent.instanceNum}`)
this.subject = new Subject();
}
就像我说的,我觉得有一些非常基本的我错过了这里的角度。任何建议在哪里看?
在此先感谢!
你不需要把它提供给'providers','PageSelectorComponent.instanceNum + = 1;'这里的东西导致麻烦'this.instanceNum?'如果在其他组件中有'PageSelectorComponent.instanceNum + = 1;'这样的东西最好不要这样做 – masterpreenz
感谢您的快速回复。我知道我不应该在提供者部分列出PageSelectorComponent。只是试图再次拿出它,但我得到了与上述相同的错误。还拿出'static instanceNum'。我仍然得到两个实例。我的想法是,这是因为它在声明**和**提供程序中列出。 –
如果'没有PageSelectorComponent'的提供者出现意味着'PageSelectorComponent'被使用像一个服务/提供者会在其他组件中的某处 – masterpreenz