2016-11-08 2 views
0

У меня есть компонент в Angular 2, который вызывает услугу и позволяет кому-то войти в Facebook. Вот как это работает:Возврат асинхронных данных из угловой службы 2

В моем компоненте я называю обслуживание с this.facebook.login()

И в моей службе, внутри login(), я позволяю кому-то войти в систему с FB.login(res => { //do stuff with res });

Это выскакивает окно аутентификации Facebook, где вы вводите ваше имя пользователя и пароль.

Это прекрасно работает. После того, как кто-то войдет в свою учетную запись Facebook, res имеет данные, которые мне нужны из Facebook. Но то, что я действительно хочу сделать, это вернуть данные обратно в мой компонент, чтобы я мог делать с ним все. Как я могу вернуть эти данные после того, как они вошли в систему с Facebook? Я пробовал с Observables, но я все время сталкиваюсь с ошибками.

+0

Не могли бы вы показать какой-то код того, что вы пытались заставить его работать? – silentsod

+0

Я не могу изменить свой вопрос, но вот что я пробовал. В моем компоненте: this.facebook.login(). Subscribe (data => {console.log (data);}); '. В моей службе: 'return FB.login (res => {return res;});'. Я думаю, что я отношусь к чему-то вроде наблюдаемого, когда на самом деле это не наблюдаемо, но я не уверен. – user5021816

ответ

1

Не видя полного кода, я не могу точно сказать, но вы на правильном пути. В вашем сервисе, где вы делаете логин FB, вам нужно сделать так, чтобы он возвращался к наблюдаемому, чтобы вы могли подписаться.

public Login(): Observable<any> { 
    return Observable.create((observer: NextObserver<any>) => { 
     // Do the FB login and wait for the data to come back 
     FB.login(response => { 
      // Return the data as an observable 
      observer.next(<any>response); 
      observer.complete(); 
     }); 
    }); 
} 
+0

Это именно то, что мне нужно. Спасибо! – user5021816

+0

не может найти имя NextObserver. Как справиться с этим? –

Смежные вопросы