2017-09-28 2 views
1

스토리지에서 json을로드하고 페이지 html 템플릿에 정보를 표시합니다. 그러나 그렇게 할 때, 페이지에 들어갈 때 나는 정보가 (아직) 이용 가능하지 않다는 것을 의미하는 오류를 얻는다.이온 3 저장 타이밍

개념이 잘못 이해되었을 수도 있지만 비동기식 저장 장치 대신 이온식 저장 장치를 동기화 호출 할 수 있습니까? 기본적으로 프로필이 장치에 저장되어 있는지 확인하고 싶지 않은 경우 -> 다시 로그인 화면으로 이동합니다. 하지만 분명히 이온 저장 장치에 대한 호출이 너무 오래 걸리며 페이지가로드 될 때이 아직 완료되지 않았습니다. 입니다.

page.ts

private user:User; 
constructor(private storage: Storage) { 
    storage.get('user').then(data => { 
     this.user = data; 
    }); 
    } 

page.html

<ion-content padding> 
    <div> 
    <p>Welcome <b>{{user.name}}</b></p>  
    </div> 
</ion-content> 

나는 user.name가 정의되지 않은 것을이 나에게 오류를 줄 것이다 말했듯이. ngif 지시문을 사용하여 약속이 해결 될 때까지 기다릴 때 작동합니다. 그러나 나는이 개념을 오해 한 것 같아요.

<ion-content padding> 
    <div *ngIf="user"> 
    <p>Welcome <b>{{user.name}}</b></p>  
    </div> 
</ion-content> 

어떻게 Ionic Storage에 전화를 걸고 페이지를로드/입력 할 때 데이터를 사용할 수 있습니까?

답변

0

저장 공간을 확보하는 데 약간의 시간이 걸리기 때문입니다.

* 표시 NG-경우없이 오류를 방지하는 또 다른 제안 :

private user:User = new User(); // Initialize the user property 

constructor(private storage: Storage) { 
    storage.get('user').then(data => { 
     this.user = Object.assign(new User, data); 
    }); 
} 
0

이 개념을 오해 할 수 있지만 이온 저장 대신 비동기 하나에 동기화 전화를 걸 수 있습니까?

이것은 비동기 작업이므로 동기화 방법으로는 불가능하다고 생각합니다. 당신의 솔루션을 사용하는 어느 쪽이든 * ngIf = "사용자" 당신은 또한

<div *ngIf="!user"> 
    //Load a spinner, or a loading bar 
    </div> 
같은 것을 추가 할 수있는 솔루션 좋은가요