2017-02-02 2 views
1

У меня проблемы с системой безопасного входа, которую я использую. Что я хочу сделать, так это проверить собственное хранилище устройства для элемента с именем «пользователь», а затем проверить, существует ли пользователь в нашей базе данных и читать в уникальном id из его строки в базе данных для использования в методе.Передача переменной из углового 2 contructor, затем утверждение в шаблон

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.

Я думаю, что это всего лишь мой недостаток опыта с угловым движением меня, поэтому, если я делаю что-то принципиально неправильное, не стесняйтесь исправлять меня.

Заранее спасибо.

+0

Можете ли вы показать нам шаблон/компонент, который имеет ' addTeam() 'в нем? – theleebriggs

+0

Я добавил, откуда вызывается код. –

ответ

0

Если вы используете this., чтобы получить доступ к свойству текущего класса, не используйте function() {

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

вместо этого использовать функцию стрела

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

Большое спасибо за это, перейдя на функцию стрелки и используя это. работал как шарм! –

+0

Добро пожаловать. Рад слышать, что это исправлено для вас. –

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