Angular指令使用Typescript接收对象作为属性

gme*_*rio 8 angularjs typescript angularjs-directive typescript1.8

我正在开发使用Angular 1.5.8和Typescript我有一个指令,它在另一个指令(当然是另一个控制器)的范围内使用.让我们说Directive1,Controller1和Directive2,Controller2.鉴于Controller1已经拥有用户信息,我想通过Directive2将此用户信息传递给Controller2,以防止再次从后端获取信息.我不确定这是否可以做到,但如果是这样的话会很好:)

以下是帮助我解释的代码:

Directive1 HTML:

<div>
    ...
    <directive2 user="{{ctrl.loggedUser}}"></directive2>
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

loggedUser通过对后端的调用加载到Controller1构造函数中.

Directive2和Directive2Ctrl Typescript代码:

class Directive2 implements ng.IDirective {
    controller = "Directive2Ctrl";
    controllerAs = "d2Ctrl";
    bindToController = {
        user: "@"
    };
    restrict = "E";
    templateUrl = "directive2.html";

    static factory(): ng.IDirectiveFactory {
        const directive = () => new Directive2();
        return directive;
    }
}
angular
    .module("app")
    .controller("Directive2Ctrl", Directive2Ctrl)
    .directive("directive2", Directive2.factory());


class Directive2Ctrl implements IDirective2Ctrl {
    public user: User;

    constructor(user: User) {
         // user is undefined
    }

    $onInit(user: User): void {
        // user is undefined
    }
}
Run Code Online (Sandbox Code Playgroud)

我找不到将用户对象传递给Directive2Ctrl的方法(甚至不确定是否可行).

gme*_*rio 0

为了完成我最初要求的操作,需要正确使用范围。

这是另一个问题,它很好地解释了它正确使用范围:

如何使用 TypeScript 定义我的控制器?