我已经创建了一个子组件,它有一个我想调用的方法。
当我调用这个方法时,它只触发console.log()
行,它不会设置test
属性??
下面是快速启动Angular应用程序与我的变化。
父级
import { Component } from '@angular/core';
import { NotifyComponent } from './notify.component';
@Component({
selector: 'my-app',
template:
`
<button (click)="submit()">Call Child Component Method</button>
`
})
export class AppComponent {
private notify: NotifyComponent;
constructor() {
this.notify = new NotifyComponent();
}
submit(): void {
// execute child component method
notify.callMethod();
}
}
字符串
孩子
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'notify',
template: '<h3>Notify {{test}}</h3>'
})
export class NotifyComponent implements OnInit {
test:string;
constructor() { }
ngOnInit() { }
callMethod(): void {
console.log('successfully executed.');
this.test = 'Me';
}
}
型
如何设置test
属性?
9条答案
按热度按时间carvr3hs1#
您可以通过使用
@ViewChild
来完成此操作。更多信息请查看此link带类型选择器
辅元件
字符串
父组件
型
带字符串选择器
辅元件
型
父组件
型
368yc8dk2#
我认为最简单的方法是使用Subject。在下面的示例代码中,每次调用'tellChild()'时都会通知孩子。
Parent.component.ts
字符串
Parent.component.html
型
Child.component.ts
型
Stackblitz上的工作样本
yfwxisqw3#
这对我很有用!对于Angular 2,在父组件中调用子组件方法
Parent.component.ts
字符串
Child.component.ts
型
k5ifujac4#
Angular -在父组件的模板中调用子组件的方法
你有ParentComponent和ChildComponent,看起来像这样。
parent.component.html
x1c 0d1x的数据
parent.component.ts
字符串
child.component.html
型
child.component.ts
型
当服务时,它看起来像这样:
的
当用户关注ParentComponent的input元素时,您希望调用ChildComponent的doSomething()方法。
只需这样做:
1.给予parent.component.html中的app-child选择器一个DOM变量名**(前缀为# - hashtag)**,在本例中我们称之为appChild。
1.为输入元素的焦点事件分配表达式值(您要调用的方法的值)。
的
结果:
的
txu3uszq5#
parent.component.html
字符串
parent.component.ts
型
child.component.ts
型
ql3eal8s6#
user6779899的答案是简洁和更通用的。然而,根据Imad El Hitti的要求,这里提出了一个轻量级的解决方案。这可以在子组件仅与一个父组件紧密连接时使用。
Parent.component.ts
字符串
Parent.component.html
型
Child.component.ts
型
aamkag617#
考虑以下示例,
字符串
阅读更多关于@ViewChild这里.
9o685dep8#
我有一个确切的情况,父组件在表单中有一个
Select
元素,在提交时,我需要根据从选择元素中选择的值调用相关的子组件的方法。父级.HTML:
字符串
父TS:
型
子TS:
型
希望这对你有帮助。
zphenhs49#
我用
EventEmitter
来做这个。parent.component.ts
字符串
child.component.ts
型
这种方法的优点:
EventEmitter
(ParentComponent
中的notify属性值),也可以正常工作坏的部分:
如果需要传递一些数据,请将
void
(在EventEmitter<void>
中)替换为所需的类型。如果你需要传递一个以上的参数,那么我建议创建
interface
,并将数据作为一个对象传递,其中包含你需要传递给ChildComponent
的所有参数。更快(也更脏)的解决方案是将类型设置为any
,并传递你想要的任何对象。传入对象作为参数的示例
parent.component.ts
型
child.component.ts
型