Reload child component when variables on parent component changes. Angular2

后端 未结 5 684
粉色の甜心
粉色の甜心 2020-12-24 01:30

I have a MasterComponent which loads header, footer, sidebar etc. On the header there is a dropdown whose options are set once the user is logged in. I want the header to be

5条回答
  •  误落风尘
    2020-12-24 02:02

    You can use @input with ngOnChanges, to see the changes when it happened.

    reference: https://angular.io/api/core/OnChanges

    (or)

    If you want to pass data between multiple component or routes then go with Rxjs way.

    Service.ts

    import { Injectable } from '@angular/core';
    import { Observable, Subject } from 'rxjs';
    
    @Injectable({ providedIn: 'root' })
    export class MessageService {
      private subject = new Subject();
    
      sendMessage(message: string) {
        this.subject.next({ text: message });
      }
    
      clearMessages() {
        this.subject.next();
      }
    
      getMessage(): Observable {
        return this.subject.asObservable();
      }
    }
    

    Component.ts

    import { Component, OnDestroy } from '@angular/core';
    import { Subscription } from 'rxjs';
    
    import { MessageService } from './_services/index';
    
    @Component({
      selector: 'app',
      templateUrl: 'app.component.html'
    })
    
    export class AppComponent implements OnDestroy {
      messages: any[] = [];
      subscription: Subscription;
    
      constructor(private messageService: MessageService) {
        // subscribe to home component messages
        this.subscription = this.messageService.getMessage().subscribe(message => {
          if (message) {
            this.messages.push(message);
          } else {
            // clear messages when empty message received
            this.messages = [];
          }
        });
      }
    
      ngOnDestroy() {
        // unsubscribe to ensure no memory leaks
        this.subscription.unsubscribe();
      }
    }
    

    Reference: http://jasonwatmore.com/post/2019/02/07/angular-7-communicating-between-components-with-observable-subject

提交回复
热议问题