Если вы хотите установить связь между компонентами, вы можете легко сделать это, используя предметы.
Для примера, как вы упомянули, у вас есть 3 компонента A, B, C
затем, если вы хотите получить данные из компонента A в компонент C, вы должны сначала сделать сервис
* 1005 экс- *
export class DatapassAtoCService{
private messageCommand = new Subject<string>();
Data$ = this.messageCommand.asObservable();
invokeMessage(msg: string) {
this.messageCommand.next(msg);
}
}
в этом примере я передаю значение msg, которое является строкой типа в компоненте A, для обслуживания этой службы используется субъект, который можно наблюдать, и он выдает это значение, которые подписались на этот меторд в службе, как показано ниже.
import { Component, OnInit } from '@angular/core';
import { DatapassAtoCService} from '../services/message.service';
@Component({
selector: 'app-component-one',
templateUrl: './component-one.component.html',
styleUrls: ['./component-one.component.css']
})
export class Acomponent implements OnInit {
constructor(private DataService: DatapassAtoCService) { }
ngOnInit() {
}
string msg =This is pass to service;
yourActionMethod() {
this.DataService.invokeMessage(msg );
}
}
тогда мы можем подписаться на эту услугу в компоненте C, тогда будет отправлено это значение msg
import { Component, OnInit, OnDestroy } from '@angular/core';
import { DatapassAtoCService} from '../services/message.service';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-component-two',
templateUrl: './component-two.component.html',
styleUrls: ['./component-two.component.css']
})
export class CComponent implements OnInit, OnDestroy {
messageSubscription: Subscription;
message: string;
constructor(private Dataservice: DatapassAtoCService) { }
ngOnInit() {
this.subscribeToMessageEvents();
}
ngOnDestroy(): void {
this.Dataservice.unsubscribe();
}
subscribeToMessageEvents() {
this.messageSubscription = this.Dataservice.Data$.subscribe(
(msg: string) => {
this.message = msg;
}
);
}
}
Так, как упомянуто в приведенном выше коде, мы можем получить это значение Acomponent msg, используя messageSubscription в Ccomponent