在同级组件之间共享数据,而它们都使用* ngIf

时间:2019-04-12 14:46:18

标签: javascript angular angular6

因此,我有一个父组件,该组件承载2个同级组件。 像这样

<div *ngif="somecode()">
 <sibling1>
 </sibling1>
</div>

<div *ngif="somecode()">
 <sibling1 [dataParams]=sibling1object.somedata>
 </sibling1>
</div>

因此我得到sibling1object.somedata未定义的错误,但是当我从第一个div中删除ngIf()时,错误消失了。 * ngIf解析为true或false无关紧要。所以即使sibling1成功加载,我也会收到错误消息。

2 个答案:

答案 0 :(得分:2)

使用[hidden]="!somecode()"代替*ngIf="somecode()"

答案 1 :(得分:1)

请在parent.component.ts中添加以下代码

 public siblingOneLoaded: boolean = false;
 ngOnDestroy(): void {
        if (sibling1object.somedata) {
            this.siblingOneLoaded = true;
        }
    }

将以下代码添加到html文件中

 <div *ngIf="siblingOneLoaded">
        <sibling1 [dataParams]=sibling1object.somedata>
        </sibling1>
    </div>