Я назначил объект во время ionViewDidLoad, но объект все еще пустой - PullRequest
0 голосов
/ 06 сентября 2018

Я новичок в Ionic, у меня возникла эта проблема при попытке передать navParams на другие страницы. Я хочу передать командный объект из TeamHomePage в TeamDetailPage . но я всегда получал ноль . У меня есть проверка в ionViewDidLoad, и я утешаю его, чтобы убедиться, что объект команды назначен, и пытаюсь пройти тестовый объект (успешно). У кого-нибудь есть идеи, когда объект команды ушел?

<ion-tabs>
  <ion-tab tabTitle="Team" [root]='teamDetailTab' [rootParams]='testing' tabIcon="basketball"></ion-tab>
  <ion-tab tabTitle="Standings" [root]='standingsTab' [rootParams]='team' tabIcon="podium"></ion-tab>
</ion-tabs>

TeamHomePage.ts

import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { TeamDetailPage } from '../team-detail/team-detail';
import { StandingsPage } from '../standings/standings';

@Component({
  selector: 'page-team-home',
  templateUrl: 'team-home.html',
})
export class TeamHomePage {
  public team: any = {}
  public teamDetailTab = TeamDetailPage
  public standingsTab = StandingsPage
  public testing: any = {id:1, content: 'testing'}

  constructor(
    public navCtrl: NavController,
    public navParams: NavParams) {}

  ionViewDidLoad() {
    this.team = this.navParams.data
    console.log('TeamHomePage navParams.data:')
    console.log(this.navParams.data)
    console.log('TeamHomePage this.team:')
    console.log(this.team)
  }

  goHome() {
    this.navCtrl.popToRoot()
  }

}

TeamDetailPage.ts

import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { EliteApi } from '../../providers/elite-api/elite-api';
import { GamePage } from '../game/game';

import * as _ from 'lodash'


@Component({
  selector: 'page-team-detail',
  templateUrl: 'team-detail.html',
})
export class TeamDetailPage {
  public team: any = {}
  public games: any[]
  private tourneyData: any

  constructor(
    public navCtrl: NavController,
    public navParams: NavParams,
    private eliteApi: EliteApi
   ) {}

  ionViewDidLoad() {
    this.team = this.navParams.data
    this.tourneyData = this.eliteApi.getCurrentTourney()
    this.games = _.chain(this.tourneyData.games)
                  .filter(g => g.team1Id === this.team.id || g.team2Id === this.team.id)
                  .map(g => {
                    let isTeam1 = (g.teamId === this.team.id)
                    let opponentName = isTeam1 ? g.team2: g.team1
                    let scoreDisplay = this.getScoreDisplay(isTeam1, g.team1Score, g.team2Score)
                    return {
                      gameId: g.id,
                      opponent: opponentName,
                      time: Date.parse(g.time),
                      location: g.location,
                      locationUrl: g.locationUrl,
                      scoreDisplay: scoreDisplay,
                      homeAway: (isTeam1 ? "vs.": "at")
                    }
                  })
                  .value()
                  console.log('TeamDetail team:')
                  console.log(this.navParams.data)
                  console.log('TeamDetail: tourneyData')
                  console.log(this.tourneyData)
                  console.log('TeamDetail touerneyData.games:')
                  console.log(this.tourneyData.games)
  }

  getScoreDisplay(isTeam1, team1Score, team2Score) {
    if (team1Score && team2Score) {
      var teamScore = (isTeam1 ? team1Score : team2Score)
      var opponentScore = (isTeam1 ? team2Score : team1Score)
      var winIndicator = teamScore > opponentScore ? 'W: ' : 'L: '
      return winIndicator + teamScore + '-' + opponentScore
    }else {
      return ''
    }
  }

Пустой объект команды отображается в консоли Chrome

enter image description here

...