在Angular 2中,可以通过以下几种方式在两个组件之间共享变量值:
// 共享数据的服务
import { Injectable } from '@angular/core';
@Injectable()
export class DataService {
private sharedValue: string;
getSharedValue(): string {
return this.sharedValue;
}
setSharedValue(value: string): void {
this.sharedValue = value;
}
}
// 组件A
import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'component-a',
template: `
<input [(ngModel)]="sharedValue" (ngModelChange)="updateSharedValue()" />
`
})
export class ComponentA {
sharedValue: string;
constructor(private dataService: DataService) {
this.sharedValue = dataService.getSharedValue();
}
updateSharedValue(): void {
this.dataService.setSharedValue(this.sharedValue);
}
}
// 组件B
import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'component-b',
template: `
<p>{{ sharedValue }}</p>
`
})
export class ComponentB {
sharedValue: string;
constructor(private dataService: DataService) {
this.sharedValue = dataService.getSharedValue();
}
}
// 组件A
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'component-a',
template: `
<input [(ngModel)]="sharedValue" (ngModelChange)="updateSharedValue()" />
`
})
export class ComponentA {
@Input() sharedValue: string;
@Output() sharedValueChange = new EventEmitter<string>();
updateSharedValue(): void {
this.sharedValueChange.emit(this.sharedValue);
}
}
// 组件B
import { Component, Input } from '@angular/core';
@Component({
selector: 'component-b',
template: `
<p>{{ sharedValue }}</p>
`
})
export class ComponentB {
@Input() sharedValue: string;
}
在父组件中使用组件A和组件B时,可以通过绑定变量的方式实现共享变量值:
<component-a [(sharedValue)]="sharedValue"></component-a>
<component-b [sharedValue]="sharedValue"></component-b>
以上是在Angular 2中实现两个组件之间共享变量值的两种常用方式。在实际应用中,可以根据具体需求选择合适的方式。
领取专属 10元无门槛券
手把手带您无忧上云