Ok 이것은 여러 서비스 사이에서 Observables를 연결하는 좋은 방법을 보여줄 수 있는지 궁금합니다.Observables를 체인화/결합하는 방법
아래의 예에서 Auth 클래스는 this.api.postSignIn()
에서 Observable을 만드는 좋은 방법이 될 수 있으므로 signInSubmit()
을 구성 요소에 다시 등록 할 수 있습니까? this.api.postSignIn()
이 Angular2 http 요청을 구독하고 있다는 점은 주목할 가치가 있습니다.
이것은 약간의 반 패턴입니까? 더 좋은 방법이 있습니까?
기본적으로 내가 달성하고자하는 기능은 다음과 같습니다- 구성 요소 - 데이터의 기호를 수집하고 올바른 형식으로 정식 서비스에 보내기에 대한 책임. 그런 다음 Auth 로그인이 완료되면 관리자 페이지로 이동하십시오.
서비스 - api 호출로 토큰을 가져오고 토큰 서비스를 통해 토큰을 설정 한 다음
isSignedIn
bool을 설정하고 호출 구성 요소로 제어를 연기합니다.@Component({...}) export class SignIn { private signIn:SignInModel = new SignInModel(); constructor(private auth:Auth, private router:Router) { } ngOnInit() { } signInSubmit() { this.auth.signIn(this.signIn) .subscribe( () => { this.router.navigate(['/admin']); } ) } } @Injectable() export class Auth { private isSignedIn:boolean = false; constructor(private api:Api, private tokenService:TokenService) { } public signIn(signIn:SignInModel) { return this.api.postSignIn(signIn) .subscribe( response => { this.tokenService.set(new TokenModel(response.token)); this.isSignedIn = true; }, error => { console.log(error); } ); } public signOut() { } }
감사합니다 .do() 및 .catch()를 읽고 subscribe()와 다른 점을 확인하십시오. –
여러분을 환영합니다! 연산자 사용의 차이점은 처리자를 비동기 데이터 흐름에 연결할 수 있다는 것입니다. 구독하면 관찰 대상에 대한 이벤트 (오류 및 완료)가 "간단하게"수신됩니다. 이 멋진 튜토리얼을 이해하는 데 도움이 될 것입니다 : https://gist.github.com/staltz/868e7e9bc2a7b8c1f754. –