0

I have one shared Service and Two sibling components.
When I have object shared between these two components and I try to change property of one of the object It gets updated but when I have String type shared data It is not updated.If this is the working Why Do I need RXJS then

I know It is object so by reference It should get updated but It is not written anywhere on Angular documentation

Here is my code for service and components

SERVICE

    import { Injectable } from '@angular/core';
    import { BehaviorSubject } from 'rxjs/BehaviorSubject';

    @Injectable()
    export class AppServiceService {

      data = [{ name: 'init' }];
      sharedData: Data[];

      // sharedData = new BehaviorSubject<Data[]>(this.data);
      constructor() {

        this.sharedData = this.data;

      }

      getData() {
        return this.sharedData;
      }

    }


    export interface Data {

      name: string;
      city?: string;

    }

COMPONENT 1

    import { Component, OnInit } from '@angular/core';
    import { AppServiceService, Data } from '../app-service.service';

    @Component({
      selector: 'app-hero',
      templateUrl: './hero.component.html',
      styleUrls: ['./hero.component.css']
    })
    export class HeroComponent implements OnInit {

      data: Data[];

      constructor(private appService: AppServiceService) { }

      ngOnInit() {

        this.data = this.appService.getData();

      }

      changeValue() {
        this.data[0].name = 'kashif';
        this.data[0].city = 'mumbra';
      }

    }

COMPONENT 2

    import { Component, OnInit } from '@angular/core';
    import { AppServiceService, Data } from '../app-service.service';

    @Component({
      selector: 'app-villain',
      templateUrl: './villain.component.html',
      styleUrls: ['./villain.component.css']
    })
    export class VillainComponent implements OnInit {

      data: Data[];

      constructor(private appService: AppServiceService) { }

      ngOnInit() {

        this.data = this.appService.getData();

      }

    }
Mario Petrovic
  • 7,500
  • 14
  • 42
  • 62
kashif khan
  • 37
  • 1
  • 6

0 Answers0