提问人:WowBlueSky 提问时间:10/16/2023 最后编辑:WowBlueSky 更新时间:10/16/2023 访问量:23
在 Angular 中从其父级访问扩展组件的方法
Access extended component's method from its parent in Angular
问:
我正在 Angular 中构建一个动态向导组件。我希望组件是智能的,以便用户无需处理任何配置,所要做的就是从组件调用向导并提供其步骤组件,如下所示:
<wizard>
<wizard-step>
<select-fruit></select-fruit>
</wizard-step>
<wizard-step>
<quantity></quantity>
</wizard-step>
</wizard>
我正在使用:
@ContentChildren(WizardFullPageStepComponent)
public stepComponents: QueryList<WizardFullPageStepComponent>;
动态获取步骤并初始化向导的逻辑。
和 组件扩展了通用组件:select-fruit
quantity
@Component({
selector: "av-wizard-generic-step",
template: ""
})
export abstract class WizardGenericStep {
abstract isValid(): void;
}
@Component({
selector: "select-fruit",
template: "Nice fruit"
})
export class FruitStepComponent{
public isValid(): void {
console.log("is the fruit is valid")
}
}
我想在组件中实现逻辑,以便能够调用扩展的实现方法(此处来自),以便根据显示的当前步骤调用预期的方法。wizard-step
isValid()
FruitStepComponent
为了尽可能保持组件的通用性,我不想引用扩展组件,而只想引用通用组件:
@Component({
selector: "av-wizard-full-page-step",
templateUrl: "./wizard-full-page-step.component.html"
})
export class WizardFullPageStepComponent implements AfterContentInit {
@Input()
public showStep: boolean = false;
@ContentChild("content", { static: false })
public wizardGenericStep: WizardGenericStep;
ngAfterContentInit() {
// here this.wizardGenericStep is undefined
}
}
我已经尝试了以前的解决方案,但值未定义。我怎样才能做到这一点?有没有我可以使用的组件树注入器?我会喜欢一个丑陋的解决方案,因为向导组件的逻辑将对使用者隐藏。
答: 暂无答案
评论