2017-02-02 5 views
1

私は使用している安全なログインシステムに少し問題があります。私がしたいのは、 'user'という項目のデバイスのネイティブストレージをチェックし、そのユーザーがデータベースに存在することを確認し、メソッド内で使用するデータベースの行から一意のIDを読み込むことです。Angular 2コンストラクタの変数をテンプレートに渡す

import {Component} from "@angular/core"; 
import { NativeStorage } from 'ionic-native'; 
import {Events, NavController, NavParams, ModalController, LoadingController} from 'ionic-angular'; 
import {Login} from '../login/login'; 
import {ChallengePage} from '../challenge/challenge'; 
import {AddTeamPage} from '../add-team/add-team'; 
import {EditTeamPage} from '../edit-team/edit-team'; 
import {Users} from '../../providers/users/users'; 
import {Teams} from '../../providers/teams/teams'; 
import {Results} from '../../providers/results/results'; 
import {Players} from '../../providers/players/players'; 
import {Packs} from '../../providers/packs/packs'; 

@Component({ 
    templateUrl: 'dashboard.html' 
}) 
export class Dashboard { 
    _id: string; 
    user: any; 
    team: any; 
    teamExists: boolean; 
    gamesPlayed: boolean; 
    sample: any; 
    strip: any; 
    last5: any; 
    constructor(
     private nav: NavController, 
     public events: Events, 
     private _navParams: NavParams, 
     private playerService: Players, 
     private userService: Users, 
     private teamService: Teams, 
     private resultService: Results, 
     private packService: Packs, 
     private modalCtrl: ModalController, 
     private loadingCtrl: LoadingController 
    ) { 
     let loading = this.loadingCtrl.create({ 
      content: "Loading..." 
     }); 

     loading.present(); 
     this.teamExists = false; 
     this.gamesPlayed = false; 
     var user = {}; 
     var _id = {}; 
     //main id 
     NativeStorage.getItem('user') 
      .then(function (data) { 
       user = data; 
       console.log("native storage object found"); 
       userService.accountExists(this.user.email).then((data) => { 
        user = data; 
        if (user) { 
         _id = user['_id']; 
         console.log("user found!", user); 
         console.log("_id for logged in user", _id); 
        } else { 
         console.log("no existing user account found!"); 
         nav.setRoot(Login); 
         nav.push(Login); 
         nav.pop(); 
        } 

       }); 
      }, function (error) { 
       console.error("Error getting user from native storage"); 
      }); 
} 

addTeam(id) { 
    this.nav.push(AddTeamPage, { 'user_id': id }); 
} 

EDIT:関数を呼び出すためのテンプレートコードに追加されました。

<ion-header class="gradient-dark-up"> 
    <ion-navbar class="navbar-primary"> 
     <button ion-button color="main" icon-left menuToggle> 
      <ion-icon class="header-main" name="menu"></ion-icon> 
     </button> 
     <ion-title><h1 class="header-main">Dashboard</h1></ion-title> 
     <ion-buttons end> 
      <button ion-button icon-only color="primary" *ngIf="!teamExists" (click)="addTeam(_id)"><ion-icon class="header-main" name="add"></ion-icon></button> 
     </ion-buttons> 
    </ion-navbar> 
</ion-header> 

のでaddTeamためのIDは、テンプレート上のボタンクリックから読まれるべきであるが、私はに_idを渡ししようとすると、それもI出力値がそれにディスプレイをコンソールにするとき、コンストラクタ内関わらず、常に未定義です正しい_id。

私はangle2の経験が足りないため、私が根本的に間違っていることをしていると私を修正する気がします。

ありがとうございます。あなたは現在のクラスのプロパティにアクセスするためにthis.を使用する場合は

+0

矢印機能を使用しfunction() {

NativeStorage.getItem('user') .then(function (data) { 

を使用していない、あなたは私たちに 'を持つテンプレート/コンポーネントを表示することができますそれにaddTeam() '? – theleebriggs

+0

コードがどこから呼び出されたのかを追加しました。 –

答えて

0

、代わりに

NativeStorage.getItem('user') 
     .then((data) => { 
+0

これは大変ありがとうございます。矢印の機能に切り替えて、これを使用してください。魅力的に働いた! –

+0

ようこそ。これを聞いてうれしいあなたのためにそれを修正しました。 –

関連する問題