gpt4 book ai didi

Angular 2从父组件调用子组件方法

转载 作者:行者123 更新时间:2023-12-02 15:45:50 26 4
gpt4 key购买 nike

我尝试使用 StackOverflow 中建议的不同方法,但无法完成以下工作。

我有一个嵌套的 ChildComponent 到 ParentComponent 中。

这里是父级的 HTML:

<div> ... <div>

<span *ngIf="value" class="option-button cursor-pointer" [attr.modelURL]="value"
(click)="$event.stopPropagation();getParts(assemblyLibrary)">
<i class="fa fa-cube"></i>
</span>

<child-component></child-component>

显然,我已将子组件导入到父组件中:

import { SharedModule } from '../../shared'; //child declaration is inside here

在父组件中,我正在实现以下代码:

import { child-component } from '../../../child-component';

@Component({
selector: 'parent-component',
templateUrl: './parent-component.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ParentComponent implements OnChanges, OnInit {
...

@ViewChild('ChildComponent') childComponent;

openDialog(filesToLoad) {
this.childComponent.openDialog(filesToLoad);
}

getParts(value) {
this.filesToLoad = [];

... code to populate files to load

this.openDialog(this.filesToLoad);
}}
}

当我通过单击 HTML 中声明的内容来调用 getParts(value) 时,出现以下错误:

VM21157:55 EXCEPTION: Cannot read property 'openDialog' of undefined

许多用户建议的这种方法有什么问题?

最佳答案

父级 html 应该是这样的:

<child-component #childComponent></child-component>

然后您可以使用@ViewChild访问该元素

export class ParentComponent implements OnChanges, OnInit {
...

@ViewChild('childComponent') childComponent;

现在,您的 @ViewChild('ChildComponent') childComponent; 没有选择任何内容,因为您的模板中没有 #ChildComponent 选择器。

关于Angular 2从父组件调用子组件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45078725/

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