0

ログイン後にユーザーがダッシュボードにリダイレクトされるときに、その単純な UI パターンを使用したいと思います。

そのため、ユーザーがログアウトすると、ホームページのみが表示されます。ログイン後、彼は /dashboard にリダイレクトされます。

angular2ルーターと流星アカウントパッケージでそれを行うにはどうすればよいですか?

助けてくれてありがとう。

4

2 に答える 2

0

残念ながら、accounts-ui パッケージは、ライフサイクル フックや、ログインおよびログアウト メソッドがトリガーされたときに追加のコードを実行するその他の明らかな方法を公開していないようです。

したがって、これも最も洗練されたソリューションではありませんが、Angular2-meteor-accounts-ui (GitHub および NPM で入手可能) を使用して機能します。

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( ['/'] );
      }
    }
  }
}

また、Meteor フォーラムには、accounts-ui パッケージを使用せず、代わりに独自の login() メソッドを作成するという別のソリューションを説明する投稿があります。

https://forums.meteor.com/t/angular2-meteor-redirect-after-successful-login-for-custom-login-form/19312

于 2016-08-28T06:06:36.527 に答える
-1

これは最も洗練されたソリューションではないかもしれませんが、ログイン後に autorun を使用してユーザーをリダイレクトすることになりました。

$scope.autorun(() => {
  let currentUser = Meteor.user();
  if (currentUser)
    $state.go('home');
});
于 2016-01-05T14:48:34.373 に答える