【发布时间】:2016-04-05 01:59:04
【问题描述】:
我正在尝试将父组件注入子组件。我认为这很简单——只需在孩子的constructor() 中指定/注入父组件:
constructor(private _parent:AppComponent) {} // child component constructor
我收到以下错误:
异常:无法解析 ChildComponent(?) 的所有参数。确保它们都有有效的类型或注释。
我错过了什么?
子组件:
import {Component} from 'angular2/core';
import {AppComponent} from './app.component';
@Component({
selector: 'child',
template: `<p>child</p>`
})
export class ChildComponent {
constructor(private _parent:AppComponent) {}
}
应用组件:
import {Component} from 'angular2/core';
import {ChildComponent} from './child.component';
@Component({
selector: 'my-app',
template: `{{title}} <child></child>
`,
directives: [ChildComponent]
})
export class AppComponent {
title = "Angular 2 - inject parent";
constructor() { console.clear(); }
}
【问题讨论】:
-
马克,问题是当你从 A 导入 B 时,同时你从 B 导入 A 会创建一个循环依赖(不能更深入地讨论这个主题)。仅使用一个包含子组件和父组件的文件检查此plnkr。
-
感谢@EricMartinez,感谢您提供的所有其他 Angular2 cmets 以及关于 SO 的回答。我从你身上学到了很多。
-
我想在上面的评论中修改一个字。它实际上是一个循环引用(不知道它是否相同,反正......)。我前段时间在 TypeScript 聊天室问过同样的事情,我得到了答案:You can check it here
-
不客气@MarkRajcok 并感谢您的话,我真的很感激,很高兴知道我提供了帮助。我真的很想请您添加一个答案(如果您发现有关此主题的更多信息)来解释此问题。看到有另一个用户拥有same issue。回答这个和那个会很有帮助。
-
@EricMartinez,我看了你提到的另一个问题。它看起来不同(错误也不同)——每个组件的模板使用另一个组件。我没有那个答案。 (就我而言,我只希望注入父级,以便子级可以调用父级上的方法。)
标签: angular angular2-di