gpt4 book ai didi

扩展类的 Angular ContentChildren

转载 作者:太空狗 更新时间:2023-10-29 17:08:55 25 4
gpt4 key购买 nike

我有 3 个组件。 1 个父组件,可以将任何 2 个子组件之一包装在 ng-content 中。我的子组件具有共享功能,因此它们正在扩展具有共享功能的抽象类。

当我尝试使用 ContentChildren 获取 ng-content 引用时,如果我使用其中一个子类,它会正常工作。当我引用抽象类时,它不起作用。有没有办法使这项工作? plkr 是:http://plnkr.co/edit/f3vc2t2gjtOrusfeesHa?p=preview

这是我的代码:

子抽象类:

    abstract export class Child{
value: any;
abstract setValue();
}

我的 parent 代码:

@Component({
selector: 'parent',
template: `
<div>
parent
<ng-content></ng-content>
</div>
`,
})
export class Parent {
@ContentChild(Child)
child: Child;
name:string;
constructor() {

}
ngAfterViewInit() {
this.child.setValue();
}
}

第一个 child :

@Component({
selector: 'child1',
template: `
<div>
value is: {{value}}
</div>
`,
})
export class Child1 extends Child {
name:string;
constructor() {

}
setValue() {this.value = 'Value from child 1'}
}

第二个 child :

@Component({
selector: 'child2',
template: `
<div>
value is: {{value}}
</div>
`,
})
export class Child2 extends Child {
name:string;
constructor() {

}
setValue() {this.value = 'Value from child 2'}
}

最佳答案

我通过使用解决了这个问题:

进入我的 Child1 的组件装饰器

providers: [{provide: Child, useExisting: forwardRef(() => Child1)}],

进入我的 Child2 的组件装饰器

providers: [{provide: Child, useExisting: forwardRef(() => Child2)}],

您现在可以从 Angular 查看新的 io 示例:

https://angular.io/guide/dynamic-component-loader

关于扩展类的 Angular ContentChildren,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43926916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com