К сожалению, пакет счетов-щ-видимому, не подвергать жизненный цикл крюк или любой другой очевидный способ запуска дополнительного кода при запуске методов входа и выхода из системы.
Так что это тоже не самое элегантное решение, но это работает, используя angular2-Метеор-счетов-Ui (доступен на GitHub и НПМ):
import { Component, DoCheck } from '@angular/core';
import { Router, ROUTER_DIRECTIVES } from '@angular/router';
import 'rxjs/Rx';
import { Meteor } from 'meteor/meteor';
import { MeteorComponent } from 'angular2-meteor';
import { InjectUser, LoginButtons } from 'angular2-meteor-accounts-ui';
import template from './app.component.html';
@Component({
selector: 'app',
template,
directives: [ LoginButtons, ROUTER_DIRECTIVES ]
})
@InjectUser('user')
export class AppComponent extends MeteorComponent implements DoCheck {
private isLoggedIn: boolean = false;
private user: Meteor.User;
constructor(private router: Router) { super(); }
ngDoCheck() {
if (!this.isLoggedIn && !!this.user) {
this.isLoggedIn = true;
if (this.router.url === '/') {
this.router.navigate(['/dashboard']);
}
} else if (this.isLoggedIn && this.user === null) {
this.isLoggedIn = false;
if (this.router.url === '/dashboard') {
this.router.navigate(['/']);
}
}
}
}
Там же пост на Метеор форумах описывая другое решение, не используя пакет счетов-интерфейс и вместо того, чтобы создать свой собственный метод входа(), здесь:
https://forums.meteor.com/t/angular2-meteor-redirect-after-successful-login-for-custom-login-form/19312
Спасибо за совет, но это не то, что решение для angular1? Как coul я делаю то же самое с ng2? –
Что вы используете для форм регистрации/входа? –
2 выделенных пакета для ng2-meteor: barbatus: ng2-meteor-accounts-ui и barbatus: ng2-meteor-accounts –