【发布时间】:2021-11-20 03:26:19
【问题描述】:
我有以下父子组件,并且我正在将数据从父组件传递到子组件。如果 parentData.isFolder===false,我会在子组件中显示 parentData.name,如果 parentData.isFolder===true,我会尝试重用子组件。我想多次使用同一个子组件,直到没有 parentData.isFolder===true 的数据。
我尝试了以下并得到了
错误:超出最大调用堆栈大小
Attempted working stackblitz example
如果这不是实现这一点的正确方法,还有其他方法吗?
parent-component.componet.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-parent-component',
templateUrl: './parent-component.component.html',
styleUrls: ['./parent-component.component.css'],
})
export class ParentComponentComponent implements OnInit {
public parentData;
constructor() {}
ngOnInit() {
this.parentData = [
{
name: 'Example file 1',
isFolder: true,
Id: '111',
},
{
name: 'Example file 2',
isFolder: false,
Id: '222',
},
{
name: 'Example file 3',
isFolder: false,
Id: '333',
},
];
}
}
parent-component.component.html
<ng-container *ngFor="let item of parentData">
<app-child-component [parentData]="item"></app-child-component>
</ng-container>
child-component.component.ts
import { Component, Input, OnInit } from '@angular/core';
@Component({
selector: 'app-child-component',
templateUrl: './child-component.component.html',
styleUrls: ['./child-component.component.css'],
})
export class ChildComponentComponent implements OnInit {
@Input() public parentData;
constructor() {}
ngOnInit() {}
}
child-component.compoent.html
<!-- Display names when isFolder === false -->
<ng-container *ngIf="parentData.isFolder === false">
<ul>
<li>{{ parentData.name }}</li>
</ul>
</ng-container>
<!-- Reuse the app-child-component if isFolder === true -->
<ng-container *ngIf="parentData.isFolder === true">
<app-child-component [parentData]="parentData"> </app-child-component>
</ng-container>
【问题讨论】:
标签: angular typescript