我是 Angular 的新手,我被困在那里。
我知道如何通过将 [parentData]="var" 注入子选择器 来在父组件和子组件之间共享数据。
但是当使用路由时;我只有一个路由器出口,无法将 [parentData] 绑定到它,因为它会引发错误。
从子路由访问父属性的最佳和最简单的方法是什么?
该项目正在进行中堆栈闪电战在这里 http://stackblitz.com/edit/angular-s66atk.
我需要在子组件内显示产品(来自父组件)。
版本:(角度5)
是的,这非常简单,当您想传递给位于的组件时router-outlet
你需要使用services
,实际上,在您转到正确的路径之前,该组件并不存在于模板中,因此通常的绑定在这里不起作用。
因此解决这个问题的最佳方法是创建一些简单的服务
在服务中
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataTransferService {
private products= new BehaviorSubject<any>([]);
cast= this.products.asObservable();
sendAnything(data) {
this.products.next(data);
}
}
然后将您的服务注入到父组件和子组件的构造函数中
在父组件中
constructor(private dataTransfer: DataTransferService){}
然后创建一个方法
shareData(data){
this.dataTransfer.sendAnything(data) // to send something
}
并从parent.component.html中调用它
(click)="shareData(data)" // data is the parent data that you want to share
在子组件中
在 ngOnInit 方法中添加:
ngOnInit() {
this.dataTransfer.products.subscribe(res=> this.var = res) // var is the property that you want to assign the data to it.
}
获取数据并使用它。
您可以在以下位置找到更多信息和示例doc https://angular.io/guide/component-interaction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)