angular6 - 在组件之间调用函数
问题描述
我有两个组件(comp1 和 comp2)。我正在尝试从 comp2 调用 comp1 内部的一个函数,但它没有发生并且它正在引发错误。但是从comp1调用comp2内部的函数时成功。
我希望它以两种方式发生(即)(a)从comp1内部的comp2触发函数(b)从comp2内部的comp1触发函数
解决方案
该错误是从 comp1 上的构造函数抛出的,它无法生成 comp2 的新实例。
请尽量不要在组件之间使用提供的组件,我建议您从 app.component 获取绑定组件到 comp1 和 comp2,例如:
app.component.html
<app-comp1 #comp1 [Comp2Component]="comp2"></app-comp1>
<app-comp2 #comp2 [Comp1Component]="comp1"></app-comp2>
app.component.ts
import { Component, ViewChild } from '@angular/core';
import { Comp1Component } from './comp1/comp1.component';
import { Comp2Component } from './comp1/comp2/comp2.component';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
name = 'Angular';
// Get component with attr #comp1
@ViewChild('comp1') comp1: Comp1Component;
// Get component with attr #comp2
@ViewChild('comp2') comp2: Comp2Component;
}
comp1.component.ts
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-comp1',
templateUrl: './comp1.component.html',
styleUrls: ['./comp1.component.css']
})
export class Comp1Component implements OnInit {
@Input() Comp2Component: Comp2Component;
constructor() { }
ngOnInit() {
}
funcInComp1() {
console.log("comp1 function triggered from comp2");
}
triggerComp2Function() {
this.Comp2Component.funcInComp2();
}
}
comp2.component.ts
import { Input, Component, OnInit } from '@angular/core';
import { Comp1Component } from '../comp1.component';
@Component({
selector: 'app-comp2',
templateUrl: './comp2.component.html',
styleUrls: ['./comp2.component.css']
})
export class Comp2Component implements OnInit {
@Input() Comp1Component: Comp1Component
constructor() { }
ngOnInit() {
}
triggerComp1Function() {
this.Comp1Component.funcInComp1();
}
funcInComp2() {
console.log("comp2 function triggered from comp1");
}
}
堆栈闪电战: https ://stackblitz.com/edit/angular-itmzhe
推荐阅读
- python - 在 Dataflow、Apache Beam 中更新 Confluent Schema Registry
- jmeter - 如何为每个控制器使用存储在列表中的元素
- c++ - Pybind11:如何为将结构作为参数的函数创建绑定?
- hibernate - 在 WHERE 中使用 AND 而不是 OR 的 Hibernate ManyToOne 自动生成条件
- android - 如何知道检查 AutoCompleteTextView 是否显示下拉菜单?
- twitter-bootstrap - bootstrap 3 下拉菜单在 iPad 的移动设备中显示
- deep-learning - 神经网络中图像的默认输入尺寸?
- rpa - 在 web 表中循环以获取 Href 链接
- xml - 通过保留节点的第一次出现来删除 XSLT 属性中的重复项
- python - Google Cloud Functions 在 Python 后台函数上引发“连接错误”