将值传递给其他组件 Angular
Passing value to other component Angular
请问如何从其他组件更改 validCompo 的值?
有人谈论 Angular 服务来解决这个问题,但我不明白它是如何工作的。我尝试了很多东西,但没有任何效果...
是否可以在下面的示例中向我展示解决问题的好方法?
https://stackblitz.com/edit/angular-sc7zsc
非常感谢!
在服务中定义变量。在两个组件中注入服务。在事件处理程序中,更新服务中的变量,它会在两个地方反映。
您可以使用 Subject
来完成。请注意,您也可以使用 @Input
来实现此目的。
无论如何,这是一个简单的例子:https://stackblitz.com/edit/angular-vts7zd?file=src%2Fapp%2Ftest.component.ts
代码如下:
主要成分
export class AppComponent {
isEnglish = true;
constructor(private service: CommonService){ }
setLang(){
this.isEnglish = !this.isEnglish;
(this.isEnglish) ? this.service.setLang('IT') : this.service.setLang('EN');
}
}
服务
@Injectable()
export class CommonService{
private lang$ = new Subject<string>();
public langEvent = this.lang$.asObservable();
public setLang(lang){
this.lang$.next(lang);
}
}
处理更改的测试组件
export class TestComponent implements OnInit {
lang ="default";
constructor(private service: CommonService, private cdr: ChangeDetectorRef) {}
ngOnInit(){
this.service.langEvent
.subscribe(res => {
if(!!res){
this.lang = res;
this.cdr.detectChanges();
}
});
}
}
由于这是我之前做过几次的代码,您可以忽略 ChangeDetectionRef
.
中的 OnPush
策略
在 CompositionService 中创建一个变量 validCompo = true。
在两个组件中注入此服务。并将变量设置为接受来自服务的值。
validCompo = this.compositionService.validCompo;
现在您可以在任何组件的 changeValue() 中使用按钮单击来切换值。
请问如何从其他组件更改 validCompo 的值? 有人谈论 Angular 服务来解决这个问题,但我不明白它是如何工作的。我尝试了很多东西,但没有任何效果...
是否可以在下面的示例中向我展示解决问题的好方法?
https://stackblitz.com/edit/angular-sc7zsc
非常感谢!
在服务中定义变量。在两个组件中注入服务。在事件处理程序中,更新服务中的变量,它会在两个地方反映。
您可以使用 Subject
来完成。请注意,您也可以使用 @Input
来实现此目的。
无论如何,这是一个简单的例子:https://stackblitz.com/edit/angular-vts7zd?file=src%2Fapp%2Ftest.component.ts
代码如下:
主要成分
export class AppComponent {
isEnglish = true;
constructor(private service: CommonService){ }
setLang(){
this.isEnglish = !this.isEnglish;
(this.isEnglish) ? this.service.setLang('IT') : this.service.setLang('EN');
}
}
服务
@Injectable()
export class CommonService{
private lang$ = new Subject<string>();
public langEvent = this.lang$.asObservable();
public setLang(lang){
this.lang$.next(lang);
}
}
处理更改的测试组件
export class TestComponent implements OnInit {
lang ="default";
constructor(private service: CommonService, private cdr: ChangeDetectorRef) {}
ngOnInit(){
this.service.langEvent
.subscribe(res => {
if(!!res){
this.lang = res;
this.cdr.detectChanges();
}
});
}
}
由于这是我之前做过几次的代码,您可以忽略 ChangeDetectionRef
.
OnPush
策略
在 CompositionService 中创建一个变量 validCompo = true。
在两个组件中注入此服务。并将变量设置为接受来自服务的值。 validCompo = this.compositionService.validCompo;
现在您可以在任何组件的 changeValue() 中使用按钮单击来切换值。