【问题标题】:Injected dependency is null注入的依赖项为空
【发布时间】:2016-10-01 07:09:01
【问题描述】:

以下是我的两个课程。登录和活动。我想将登录注入活动。这发生在已经执行登录并设置了参数之后。在文件 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;
    });
}

【问题讨论】:

    标签: dependency-injection typescript aurelia


    【解决方案1】:

    我认为Activity 类/自定义元素正在注入Login 类/自定义元素的不同实例。尽管这些项目通常具有容器控制的“单例”生命周期,但 UI 组件却没有。我认为您可以通过将@singleton 添加到您的Login ui 组件来获得您必须工作的内容,但是您最好创建一个单独的类,可能称为“用户”,您可以将其注入到Login UI 中组件和Activity UI 组件。

    【讨论】:

    • 这完全正确。出于某种原因,尽管 UI 组件也是单例的……但事后看来这很愚蠢。我分到一个单独的班级,像做梦一样工作,谢谢!
    猜你喜欢
    • 2022-07-07
    • 2021-07-11
    • 1970-01-01
    • 2017-06-04
    • 2019-04-30
    • 2020-12-20
    • 2020-03-14
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多