에 대한 Observables은 사용 방법, 여기에 서비스 일부입니다구성 요소 간 통신
import {
Injectable,
EventEmitter,
Output
} from '@angular/core';
import {
HttpClientModule,
HttpClient
} from '@angular/common/http';
import {
Observable
} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import {
Subject
} from 'rxjs/Subject';
import {
AppConstants
} from './../config/constants';
@Injectable()
export class GlobalService {
private subject = new Subject <any>();
@Output() LoggedIn: EventEmitter <any> = new EventEmitter();
mfaData: any;
constructor(private http: HttpClient) {
}
validateCreds(postData, institutionId, customerId) {
return this.http.post(AppConstants.baseUrl + AppConstants.serverRoutes.validateCreds + institutionId + '/' + customerId, postData)
.subscribe(response => {
console.log(response);
if (response['status'] == 203) {
this.mfaData = response['body'].questions;
if (this.mfaData[0].choices || this.mfaData[0].imageChoices) {
console.log('hey there');
this.subject.next({
mfaData: JSON.stringify(this.mfaData)
});
}
}
})
}
refreshHeaders(): Observable <any> {
return this.subject.asObservable();
}
}
import {
Subscription
} from 'rxjs/Subscription';
import {
GlobalService
} from '../../../providers/global.serivce';
export class MfaChallengeComponent implements OnInit {
subscription: Subscription;
constructor(private activatedRoute: ActivatedRoute, private bankService: BanksService, private globalService: GlobalService) {
this.subscription = this.globalService.refreshHeaders().subscribe(message => {
console.log(message);
});
}
}
하지만 백엔드에서 데이터를 받으면 피사체의 다음 메서드를 호출하고 다른 구성 요소의 생성자에서 다시 호출합니다. 작동하는 예제를 본 반면 작동하지 않습니다. 이 서비스는 전 세계적으로 주입되었습니다.
아래에 정말 좋은 설명이 있습니다. 나는 각도 관점에서 단지 그것을 추가 할 것이다.'생성자 (constructor) '는 서비스를 호출하기에 아주 좋은 곳이다. 'ngOnInit()'는 보통 상황이 대신 일어나는 곳입니다. –