注入的依赖项为null

时间:2016-06-01 18:58:26

标签: dependency-injection typescript aurelia

以下是我的两个班级。登录和活动。我想将Login注入Activity。在登录已经执行并设置参数后会发生这种情况。在文件2中,login.UserName始终是未定义的,我尝试绑定的任何其他项都是未定义的。是否有任何我缺少正确绑定的东西?

//file 1
import {autoinject} from 'aurelia-framework';
import {HttpClient, json} from 'aurelia-fetch-client';
import {bindable} from 'aurelia-framework';
import 'fetch';

@autoinject
export class Login{
    @bindable UserName:String

    constructor(private http: HttpClient){
        ...redacted...
    }

    login(){
       this.UserName="test";
    }
}


//file 2
import {autoinject} from 'aurelia-framework';
import {HttpClient, json} from 'aurelia-fetch-client';
import 'fetch';
import {Login} from 'login/src/login';

@autoinject
export class Activity {
    Login: Login;

    constructor(private http: HttpClient, private login: Login) {
      ...redacted...
      this.Login=login;
    });
}

1 个答案:

答案 0 :(得分:1)

我认为Activity class / custom-element正在注入Login class / custom-element的不同实例。虽然这些项目通常具有容器控制的“单身”生命周期,但UI组件却没有。我认为你可以通过将@singleton添加到Login ui组件来获得你必须工作的东西,但你可能最好创建一个单独的类,可能称为“用户”,你可以注入Login UI组件和Activity UI组件。