gpt4 book ai didi

javascript - 断言一个组件只能用作另一个组件的子组件

转载 作者:行者123 更新时间:2023-11-30 19:48:57 24 4
gpt4 key购买 nike

假设我有两个组件,<child><parent> ,并且我想在运行时断言子组件在父组件中使用如下:

<parent>
<child></child>
</parent>

我该怎么做?我试图通过子构造函数将父项注入(inject)子项并断言其存在,但我遇到了循环依赖错误,因为父项也需要对子项的引用。

最佳答案

您可以使用 following syntax 注入(inject)子组件的主机。 :

import { Component, Optional, Host, Inject, forwardRef } from '@angular/core';
import { ParentComponent } from './parent.component';

...
export class ChildComponent {
constructor(@Optional() @Host() @Inject(forwardRef(() => ParentComponent)) parent) {
console.log("Has valid parent:", !!parent);
}
}

参见 this stackblitz用于演示。


如果你希望 Angular 在找不到合适的父组件时抛出异常,移除 @Optional 装饰器:

constructor(@Host() @Inject(forwardRef(() => ParentComponent)) parent) {
console.log("Has valid parent!");
}

参见 this stackblitz用于演示。

关于javascript - 断言一个组件只能用作另一个组件的子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54673021/

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