У меня проблемы с системой безопасного входа, которую я использую. Что я хочу сделать, так это проверить собственное хранилище устройства для элемента с именем «пользователь», а затем проверить, существует ли пользователь в нашей базе данных и читать в уникальном 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.
Я думаю, что это всего лишь мой недостаток опыта с угловым движением меня, поэтому, если я делаю что-то принципиально неправильное, не стесняйтесь исправлять меня.
Заранее спасибо.
Можете ли вы показать нам шаблон/компонент, который имеет ' addTeam() 'в нем? – theleebriggs
Я добавил, откуда вызывается код. –