Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 通过角度观察对象特性中的变化_Angular_Rxjs - Fatal编程技术网

Angular 通过角度观察对象特性中的变化

Angular 通过角度观察对象特性中的变化,angular,rxjs,Angular,Rxjs,在Angular2应用程序中,我有一个对象,其某些属性与此类似: var person = { firstname:"Tom", lastname:"Hanks" }; 如果其中一个属性,例如“firstname”更改为“Bill”,我想在HTML页面中隐藏一些元素。 有没有办法观察这个物体的变化?使用RxJS的最佳方法是什么?我是Angular和RxJS的新手。你可以使用主题 export class YourService {

在Angular2应用程序中,我有一个对象,其某些属性与此类似:

var person = { 
   firstname:"Tom", 
   lastname:"Hanks" 
};
如果其中一个属性,例如“firstname”更改为“Bill”,我想在HTML页面中隐藏一些元素。 有没有办法观察这个物体的变化?使用RxJS的最佳方法是什么?我是Angular和RxJS的新手。

你可以使用主题

export class YourService {
  person$: Subject<Person> = new Subject<Person>();

  setPerson(person) {
    this.person$.emit(person);
  };
}
你可以使用主题

export class YourService {
  person$: Subject<Person> = new Subject<Person>();

  setPerson(person) {
    this.person$.emit(person);
  };
}
  • 将对象包装在一个可观察的多播中,如
  • 控制器

    const personSrc=新的行为主体({
    名字:“汤姆”,
    姓:“汉克斯”
    };
    const person$=this.personSrc.asObservable();
    
  • 使用
    async
    管道在模板中显示它
  • 模板

    
    {{person.lastname}
    一些性质
    
  • 通过可观察对象推送对对象的任何更改
  • 控制器

    this.personSrc.next({firstname:“Bill”,lastname:“Watterson”})
    
  • 将对象包装在一个可观察的多播中,如
  • 控制器

    const personSrc=新的行为主体({
    名字:“汤姆”,
    姓:“汉克斯”
    };
    const person$=this.personSrc.asObservable();
    
  • 使用
    async
    管道在模板中显示它
  • 模板

    
    {{person.lastname}
    一些性质
    
  • 通过可观察对象推送对对象的任何更改
  • 控制器

    this.personSrc.next({firstname:“Bill”,lastname:“Watterson”})
    
    您可以通过
    distinctUntilKeyChanged

    distinctUntilKeyChanged
    -仅当指定的键值 改变

    例如:

    console.clear();
    import { BehaviorSubject } from "rxjs";
    import { distinctUntilKeyChanged } from "rxjs/operators";
    
    const personSrc = new BehaviorSubject<any>({
      firstname: "Tom",
      lastname: "Hanks"
    });
    
    setTimeout(() => {
      const newPerson = { firstname: "Bill", lastname: "Smith" };
      personSrc.next(newPerson);
    }, 5000);
    
    personSrc.pipe(distinctUntilKeyChanged("firstname")).subscribe(console.log);
    
    
    console.clear();
    从“rxjs”导入{BehaviorSubject};
    从“rxjs/operators”导入{distinctUntilKeyChanged};
    
    const personSrc=new BehaviorSubject

    您可以通过
    distinctUntilKeyChanged

    distinctUntilKeyChanged
    -仅当指定的键值 改变

    例如:

    console.clear();
    import { BehaviorSubject } from "rxjs";
    import { distinctUntilKeyChanged } from "rxjs/operators";
    
    const personSrc = new BehaviorSubject<any>({
      firstname: "Tom",
      lastname: "Hanks"
    });
    
    setTimeout(() => {
      const newPerson = { firstname: "Bill", lastname: "Smith" };
      personSrc.next(newPerson);
    }, 5000);
    
    personSrc.pipe(distinctUntilKeyChanged("firstname")).subscribe(console.log);
    
    
    console.clear();
    从“rxjs”导入{BehaviorSubject};
    从“rxjs/operators”导入{distinctUntilKeyChanged};
    const personSrc=新行为主体