吴桂林*_*吴桂林 25 components angular
我正在开发一个Web应用程序项目,我正在尝试使用Angular,我在组件通信方面遇到了一些问题.例如,父组件如何与子组件交换数据,如何在兄弟组件之间进行通信.
Ale*_*x J 17
如果您尝试从父组件与子组件进行通信,则在角度文档中使用带@Output的@Input和EventEmitters可以非常清楚地描述这一点.
至于兄弟姐妹之间的沟通,我在一个类似的问题中发布了一个答案,可能有助于解决跨兄弟组件共享数据的问题.目前,我认为共享服务方法是最有效的.
Zil*_*ang 12
@Input和@Output
如果有多部分组件,您可以使用@Input和@Output交换数据.文件:https://angular.io/guide/component-interaction
示例:https://angular.io/generated/live-examples/component-interaction/eplnkr.html
依赖注入
您可以将数据存储在Service中,然后将Service注入到所需的组件中.例如示例中的"user.server.ts":
https://angular.io/generated/live-examples/dependency-injection/eplnkr.html
Eva*_*que 12
使用服务:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class AppState {
public _subject = new Subject<object>();
public event = this._subject.asObservable();
public publish(data: any) {
this._subject.next(data);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样发布类似事件的消息:
export class AppComponent {
constructor(
public appState: AppState
) {
appState.publish({data: 'some data'});
}
}
Run Code Online (Sandbox Code Playgroud)
你可以订阅这些活动:
export class HomeComponent {
constructor(
public appState: AppState
) {
appState.event.subscribe((data) => {
console.log(data); // {data: 'some data'}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43949 次 |
| 最近记录: |