如何从Angular 2服务中的回调函数返回一个值?

时间:2018-02-03 04:57:09

标签: javascript asynchronous callback

我试图从angular2服务中的回调函数返回值,并在我的组件中使用该值(返回self.globalMenu),但回调函数没有执行,它正在抛出"回调函数未定义"错误。

它在Angular 1中正常工作,在将代码迁移到Angular 2之后,它停止了工作。

有人可以帮我修复此错误并从服务中的回调函数返回值吗?

portalmode.service.ts:

import { Injectable,Inject } from '@angular/core';
@Injectable()
export class MenuViewModelProvider {
  globalMenu: any;

  constructor(@Inject('DcsPlus.Frame.Logic.portalComponentManager') private portalComponentManager,
              @Inject('DcsPlus.Frame.Logic.viewModelProvider') private viewModelProvider) {}

  public setMenuCommandItems(mmCommandItems,appId): any {
    let self = this;
    self.globalMenu = self.getMenu(mmCommandItems);
      this.viewModelProvider.register("mmMenu", function () {
          return self.globalMenu;
      });
  }
}

menu.component.ts:

export class MainMenuComponent implements OnInit{

    constructor(@Inject('DcsPlus.Frame.Logic.viewModelProvider') private viewModelProvider) {}

  mainMenu:any=this;
  viewModel:any;

    ngOnInit() {
        this.viewModelProvider.load('mmMenu').then(function () {
            let menu = this.viewModelProvider.get('mmMenu');
            this.mainMenu.items = menu.items;
        });
    }
}

0 个答案:

没有答案