在Angular中,可以使用服务、组件通信或通过@Input()注解来实现视图之间的数据共享。以下是使用服务(Service)的示例:
1.创建服务
@Injectable({
providedIn: 'root'
})
export class DataService {
private messageSource = new BehaviorSubject("Initial Message");
currentMessage = this.messageSource.asObservable();
constructor() { }
changeMessage(message: string) {
this.messageSource.next(message);
}
}
2.在组件中使用服务
export class ComponentA {
constructor(private dataService: DataService) { }
sendMessage(message: string) {
this.dataService.changeMessage(message);
}
}
export class ComponentB {
message: string;
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.currentMessage.subscribe(message => this.message = message)
}
}
在这个例子中,我们创建了一个用来传递消息的DataService服务,并用BehaviorSubject来处理当前消息状态。为接收方组件ComponentB中添加了一个订阅器,这样便可以接收从ComponentA发送来的更新了。
3.在组件HTML中实现
{{ message }}
在这个例子中,我们使用了数据绑定技术,绑定输入框的值到message变量中,这样便可以捕获输入框的变化事件。当用户点击“Send”按钮时,这将会发送一个消息到DataService服务中并刷新消息状态。最后,在componentB的HTML模板中,我们使用插值表达式将message变量的值显示给用户。