2017-07-27 28 views
0

試圖在承諾則函數使用角持久性,但總是說未定義角4持久性存儲使用則發揮作用

import { Component, OnInit, Injectable } from '@angular/core'; 

import {Router} from "@angular/router"; 
import {PersistenceService, StorageType} from "angular-persistence"; 

export class ProcessingComponent implements OnInit { 

    myfunc: any; 

    constructor(private PersistenceService: PersistenceService){ 
    } 


    ngOnInit() { 

    this.myfunc = new myfunction(); 



    this.shaObj.generateIdentity().then(function (result, PersistenceService) { 
     console.log(PersistenceService.set('identityKey')); // getting undefined 
    }.bind(this.PersistenceService)); 

    } 

所以綁定服務似乎並不奏效,如何讓外部範圍'this'被傳遞給'.then'函數。

回答

1

您應該使用this.injectableName而不是直接使用類名

console.log(PersistenceService.set('identityKey')); 

應該

console.log(this.PersistenceService.set('identityKey')); 

注:按照指引,以避免混淆使用cammelCase用於注入依賴性

constructor(private persistenceService: PersistenceService){} 

你也可以使用,而不是使用.bind(this)

this.shaObj.generateIdentity().then((result, PersistenceService) => { 
    //Assuming you changed dependency name to `persistenceService` 
    console.log(this.persistenceService.set('identityKey')); 
}); 
+1

冠軍得主,雞宴Arrow function的ES6美 – wesside