javascript - 无法读取 subview 的变量数据

标签 javascript angular typescript

我有一个组件MyComponent,它的声明如下:

export class MyComponent implements IComponent {
    ...
    @Input() Departments: any;    
    @Input() DropDownOptions: any;    
    @Input() Data: any[];
    ...
}

但是,当我尝试从 PersonComponent 组件访问时,没有属性 Data

PersonComponent 组件的 HTML:

<fieldset>
    <my-comp #myGrid [Options]="ps.Options['myGrid']"></my-comp>
</fieldset>

PersonComponent 组件的 TypeScript:

export class PersonComponent implements OnInit {    
    @ViewChild('myGrid') myGridComponent: MyComponent;

    ngAfterViewInit() {
        debugger;        
        let localData2 = this.myGridComponent.Data; // NO DATA PROPERTY. Undefined

    }

    ngAfterContentInit() {
        debugger;        
        let localData1 = this.myGridComponent.Data; // NO DATA PROPERTY. Undefined       
    }

}

Chrome调试器中可以看到的变量:

enter image description here

如何读取 MyComponentData 属性值?我做错了什么?

最佳答案

@Input Data ...装饰器从父组件“接收”数据。您可以通过父模板内的属性 [Data] 设置它。如果你不设置它,它将是未定义的。另一方面,您的 [Options] 属性在子级中没有相应的 @Input。

你可以像这样修复它:

<fieldset>
    <my-comp #myGrid [Data]="person.data"></my-comp>
</fieldset>

其中 person 是一个数组,其数据字段位于父组件中。

请仔细阅读文档https://angular.io/guide/template-syntax#inputs-outputshttps://angular.io/guide/component-interaction#pass-data-from-parent-to-child-with-input-binding

最好不要使用保留/过于通用的名称,例如数据、选项,以避免名称冲突以及驼峰式大小写。

关于javascript - 无法读取 subview 的变量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45691673/

相关文章:

typescript ,装饰异步功能

reactjs - 在带有 TypeScript 的 next.js 中使用 Router 的空安全方法

javascript - 如何为 facebook 应用程序设置 Canvas url?

angular - 如何从父组件查询 ng-content 的输入元素

javascript - 具有嵌入式查询 RxJ 的人口

javascript - 在页面路由上传递同级数据时,它给出了 undefined

javascript - Typescript 丢失了 forEach 或 map 的未定义上下文

javascript - 模拟点击javascript Button

javascript - 跟踪对象数组中的更改不适用于 Vue.$set

javascript - 将事件绑定(bind)到 jquery 中的 IFrame 主体更改