Ionic2 नेटिवस्टॉरेज प्राप्त नहीं कर सकता Iemem(उपयोगकर्ता)



cordova-plugins angular2-routing (1)

अंत में मुझे एक समाधान मिला Html फ़ाइल (ProfilePage.html) में, मैंने * ngIf सशर्त का उपयोग किया था:

<div *ngIf="user"> {{user.name}} </div>

इससे देरी की शुरुआत होगी कि 'उपयोगकर्ता' ऑब्जेक्ट अब शून्य नहीं है क्योंकि यह नेटिव स्टोरेज से पढ़ता है।

वैकल्पिक रूप से, एक एल्विस ऑपरेटर भी मेरे लिए काम करता है:

<div> {{ user?.name }} </div>

मेरे पास एक आयनिक 2 ऐप है और मैं नेटीस्टॉज को नाम / चित्र पुनर्प्राप्त करने और उसे सहेजने के लिए मूल FB लॉगिन का उपयोग कर रहा हूं। प्रवाह यह है कि मैं स्वागत पृष्ठ खोलता हूं, लॉग इन करता हूं और डेटा को सहेजता हूं। वहां से, होमपेज पर नौवहन करें अब तक यह महान काम करता है

हालांकि, मेरे पास ProfilePage (tabRoot द्वारा सुलभ) है, विफल रहता है इसका कारण यह है कि मेरे profile.html में मेरे पास निम्न टैग है जिसे उपयोगकर्ता नाम प्रस्तुत करना चाहिए (यह होमपेज पर काम करता है, लेकिन प्रोफ़ाइलपेज पर नहीं):

{{ user.name }}

मैं XCode पर मिलती हुई त्रुटि है:

2017-05-02 18: 40: 41.657374 फॉक्सबॉक्स ऐप [1102: 22615 9] त्रुटि: नेविगेट करने में विफल: अपरिभाषित कोई ऑब्जेक्ट नहीं है (मूल्यांकन 'co.user.picture')

ध्यान दें कि किसी कारण से इसे 'सह' के साथ तैयार किया जाता है। जो मुझे नहीं पता है कि इसकी कहां से आ रही है या इसका क्या मतलब है।

यहां आपका स्वागतपेज कोड है:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

import { HomePage } from '../home/home';
import { AboutPage } from '../about/about';


import { Facebook, NativeStorage } from 'ionic-native';
//import { FacebookAuth, User, Auth } from '@ionic/cloud-angular';
import { CloudSettings, CloudModule } from '@ionic/cloud-angular';

import {GoogleAnalytics} from 'ionic-native';

@Component({
  selector: 'page-welcome',
  templateUrl: 'welcome.html'
})
export class WelcomePage {

  FB_APP_ID: number = 1234567890;

  homePage = HomePage;
  aboutPage = AboutPage;

  constructor(
    public navCtrl: NavController,
    //public facebookAuth: FacebookAuth, 
    //public auth: Auth,
    //public user: User,
    ) {

    Facebook.browserInit(this.FB_APP_ID, "v2.8");

  }


doFbLogin(){
    //alert("fb is logged in");
    let permissions = new Array();
    let nav = this.navCtrl;
    //the permissions your facebook app needs from the user
    permissions = ["public_profile"];


    Facebook.login(permissions)
    .then(function(response){
      let userId = response.authResponse.userID;
      let params = new Array();

      //Getting name and gender properties
      Facebook.api("/me?fields=name,gender", params)
      .then(function(user) {
        user.picture = "https://graph.facebook.com/" + userId + "/picture?type=large";
        //now we have the users info, let's save it in the NativeStorage
        NativeStorage.setItem('user',
        {
          name: user.name,
          gender: user.gender,
          picture: user.picture,
          email: user.email,
        })
        .then(function(){
          nav.push(HomePage);
          console.log("User Data Stored");
        }, function (error) {
          console.log(error);
        })
      })
    }, function(error){
      console.log(error);
    });

  }
}

यहां होमपेज कोड है:

import { Component } from '@angular/core';
import { NavController, Platform } from 'ionic-angular';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';

import { ClaimPage } from '../claim/claim';


import { SocialSharing } from '@ionic-native/social-sharing';

import { Facebook, NativeStorage } from 'ionic-native';
//import { FacebookAuth, User, Auth } from '@ionic/cloud-angular';
import { CloudSettings, CloudModule } from '@ionic/cloud-angular';

import {GoogleAnalytics} from 'ionic-native';



@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  posts: any;
  sendme: any;
  claimPage = ClaimPage;
  user: any;
  userReady: boolean = false;

  constructor(
    public navCtrl: NavController, 
    public http: Http,
    private sharingVar: SocialSharing,
    public platform: Platform,
    ) {


    // Check to see if user already exists (via FB login)
    let env = this;
    NativeStorage.getItem('user')
    .then(function (data){
      env.user = {
        name: data.name,
        gender: data.gender,
        picture: data.picture
      };
        env.userReady = true;
        // console.log(data.name);
    }, function(error){
      console.log(error);
    });


    this.platform.ready().then(() => {
      //alert("platform is ready");
      GoogleAnalytics.trackView("Home-Page", "http://foxboxapp.com/home", true);
      //alert("GA called");
    });

    this.http.get('http://getyourtryston.com/foox/sample.php').map(res => res.json()).subscribe(data => {
        this.posts = data.data.children;

    });

  }



  otherShare(){
    this.sharingVar.share("FoxBox App","Get Awesome College Deals",null/*File*/,"http://fooxsocial.com")
    .then(()=>{
        //alert("Success");
      },
      ()=>{
         alert("Sharing Failed!")
      })

  }

}

और यहां प्रोफाइल पेज कोड है जो विफल रहता है:

import { Component } from '@angular/core';
import { NavController, Platform } from 'ionic-angular';

import { WelcomePage } from '../welcome/welcome';



import {GoogleAnalytics} from 'ionic-native';
import { SocialSharing } from '@ionic-native/social-sharing';
import { Facebook, NativeStorage } from 'ionic-native';
//import { FacebookAuth, User, Auth } from '@ionic/cloud-angular';
//import { CloudSettings, CloudModule } from '@ionic/cloud-angular';

@Component({
  selector: 'page-about',
  templateUrl: 'about.html'
})

export class AboutPage {

  user: any;
  userReady: boolean = false;

  constructor(
    public navCtrl: NavController,
    public platform: Platform,
    private sharingVar: SocialSharing,
    //public facebookAuth:FacebookAuth, 
    //public auth:Auth,    
    ) {



    // Check to see if user already exists (via FB login)
    let env = this;
    NativeStorage.getItem('user')
    .then(function (data){
      env.user = {
        name: data.name,
        gender: data.gender,
        picture: data.picture
      };
        env.userReady = true;
        // console.log(data.name);
    }, function(error){
      console.log(error);
    });



    // PLATFORM READY, do your thang!
    this.platform.ready().then(() => {

      // Ping Google Analytics
      GoogleAnalytics.trackView("Profile Page", "http://foxboxapp.com/home", true);


    });


  }

  otherShare(){
    this.sharingVar.share("FOOX Social App","Get Awesome College Deals",null/*File*/,"http://fooxsocial.com")
    .then(()=>{
        //alert("Success");
      },
      ()=>{
         alert("Sharing Failed!")
      })

  }


  doFbLogout(){
    var nav = this.navCtrl;
    Facebook.logout()
    .then(function(response) {
      //user logged out so we will remove him from the NativeStorage
      NativeStorage.remove('user');
      nav.push(WelcomePage);
    }, function(error){
      console.log(error);
    });
  }
}

और यहां ProfilePage.html है

<ion-header>

  <ion-navbar color="light" hideBackButton="true">

      <ion-buttons end>
      <button ion-button icon-only (click)="otherShare()">
        <ion-icon name="share"></ion-icon>
      </button>
    </ion-buttons>

  </ion-navbar>

</ion-header>

<ion-content>

<ion-card class="pCard">
  <div class="pHeader" align="center">
    <div *ngIf="user" class="pImgBox" align="center">
      <img class="pImage" src="{{ user.picture }}">
    </div>
    <div class="pUsername" align="center">
      <div *ngIf="user"> {{user.name}} </div>
      <br>
      <span class="pSchool">(Santa Monica College)</span>
    </div>
  </div>

  <ion-list>
    <ion-item class="pItems">
      Share App
    </ion-item>
    <ion-item class="pItems">
      Give Us Feedback
    </ion-item>
    <ion-item class="pItems">
      Suggest Vendors
    </ion-item>
    <ion-item class="pItems">
      Privacy & Terms of Service
    </ion-item>
    <ion-item class="pItems">
      Log Out
    </ion-item>
    <ion-item class="pItems">
      Delete Account
    </ion-item>
  </ion-list>
</ion-card>

<button ion-button round (click)="doFbLogout()">Log Out</button>

</ion-content>

मुझे यह बताना चाहिए कि, अगर मैं {{user.name}} और {{user.picture}} को अपने प्रोफाइल पेज से हटाता हूं, तो कोई समस्या नहीं होती है। वास्तव में, यदि आप ProfilePage के टीएस में देखते हैं, तो मैं अलर्ट और कंसोल.लॉग दोनों किसी भी मुद्दे के बिना उपयोगकर्ता नाम (data.name) कर सकता हूँ।

मैं एक शुरुआत कर रहा हूं और इस संबंध में किसी भी संक्षिप्त सहायता की सराहना करता हूं। धन्यवाद।