首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不发送变量中的更改

不发送变量中的更改
EN

Stack Overflow用户
提问于 2019-05-30 07:40:03
回答 1查看 154关注 0票数 0

我有一个服务,组件和模块。

在服务中,我希望发送标志$变量的更改。

代码语言:javascript
复制
export class ListUserService {
    public flag$ = new Subject< boolean >();
}

此组件对变量进行更改

代码语言:javascript
复制
export class ListUserComponent implements OnInit {
    private flagPerfil = false;

    getFlag() {
        return this.flagPerfil;
    }


  constructor(private listUserService: ListUserService) {

  }

  functionThatGetsCalledWhenTheFlagIsChanged(){
     this.listUserService.flags$.next(this.flagPerfil);
  }
}

我需要在此模块中接收变量标志$

代码语言:javascript
复制
export class Tab1PageModule {
    public flagPerfil: boolean;

    constructor(private listUserService: ListUserService) {
        listUserService.flag$.subscribe((flag)=>{
           console.log('FLAG', flag); //never show the console
           this.flagPerfil = flag;
      });
    }
}

从未进入此控制台主题,但出现此错误主题TS2322:类型‘console.log('FLAG', flag);’不可分配给类型'boolean',并且在模块的视图中什么也不显示

代码语言:javascript
复制
<ion-card-title> {{flagPerfil}} Puedes agregarlos para iniciar una amistad</ion-card-title>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 07:51:26

使用一个行为主体,因为它们有一个默认值,任何新的观察者都会得到最后一个发出的值,主体只会在他们发出时通知观察者,最后一个值会丢失给新的观察者。

代码语言:javascript
复制
export class ListUserService {
  public flag$ = new BehaviorSubject<boolean>(false);
}

代码语言:javascript
复制
const { Subject, BehaviorSubject } = rxjs;

const subject$ = new Subject();
subject$.next('Subject initial val');
const behaviorSubject$ = new BehaviorSubject('BehaviorSubject initial val');

subject$.subscribe(val => { console.log(val); });
behaviorSubject$.subscribe(val => { console.log(val); });

subject$.next('Subject new val');
behaviorSubject$.next('BehaviorSubject new val');
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>

在你的组件中使用异步管道,这样你就不需要订阅代码了。

代码语言:javascript
复制
export class ListUserComponent implements OnInit {
  flags$ = this.listUserService.flags$;


  constructor(private listUserService: ListUserService) {

  }

  functionThatGetsCalledWhenTheFlagIsChanged(value: boolean){
     this.listUserService.flags$.next(value);
  }
}

在视图模板中

代码语言:javascript
复制
<ion-card-title> {{flag$ | async}} Puedes agregarlos para iniciar una amistad</ion-card-title>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56369856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档