2017-10-27 3 views
0

Im einige Tests mit einer js Bibliothek mit meiner Angular app und ich machen bemerkte die folgenden:Warum funktioniert Callback nicht im eckigen Betrieb?

secret.service.ts:

@Injectable() 
    export class SecretService { 
    public get adalConfig(): any { 
    return { 
      clientId: 'e71122a4-3998-416d-xxxxx', 
      redirectUri: window.location.origin + '/', 
      callback:() => console.log('not called!!') // not work 
    }; 
    } 

app.component.ts

constructor(private adalService: AdalService, 
       private secretService: SecretService,) { 
     this.adalService.init(this.secretService.adalConfig); 
    } 

Wenn Ich registriere die callback Eigenschaft im Service, es ruft nie an. Aber wenn ich die app.component.ts Um dies zu ändern:

constructor(private adalService: AdalService, 
       private secretService: SecretService,) { 

    let adalConfig: any = { 
     clientId: this.secretService.adalConfig.clientId, 
     redirectUri: window.location.origin + '/', 
    }  

    adalConfig.callback =() => console.log('now is called!') // like this works normally 
    this.adalService.init(adalConfig); 
} 

Warum, wenn ich die Callback-Funktion auf den Dienst eingestellt sein nicht genannt?

+0

Wie lautet Ihr Code für 'AdalService'? – jaibatrik

+0

Erste Version ist kompiliert zu js wie: adalConfig.prototype.callback und zweite adalConfig.callback? – zxxc

Antwort

0

Vielleicht haben Sie einige Klammern weggelassen. Versuchen Sie folgendes:

this.adalService.init(this.secretService.adalConfig()); 

Und ändern adalConfig Methode:

adalConfig(): any { 
    return { 
     clientId: 'e71122a4-3998-416d-xxxxx', 
     redirectUri: window.location.origin + '/', 
     callback:() => console.log('not called!!') // not work 
    }; 
} 
0

adalConfig ist ein Verfahren und Sie übergeben wie Variable, um den der Rückgabewert der Methode zu nutzen, müssen Sie nennen.

constructor(private adalService: AdalService, private secretService: SecretService,) { 
     console.log(typeof this.secretService.adalConfig);// you can see function 
     this.adalService.init(this.secretService.adalConfig()); 
    } 
+0

Soweit ich sehen kann, ist 'adalConfig' ein Getter (markiert mit' get') in SecretService, so dass es nicht als Methode aufgerufen werden muss. – ConnorsFan

Verwandte Themen