Angularjs 当“时,父组件未传递给子组件”;要求;使用
我试图将父组件的控制器的函数调用到子组件的控制器中。但是,父组件似乎没有在Init上注入到子组件的控制器中 在下面的代码片段中,我试图调用父组件(即Angularjs 当“时,父组件未传递给子组件”;要求;使用,angularjs,typescript,Angularjs,Typescript,我试图将父组件的控制器的函数调用到子组件的控制器中。但是,父组件似乎没有在Init上注入到子组件的控制器中 在下面的代码片段中,我试图调用父组件(即nvPanel)控制器(即PanelController)在子组件控制器中的show方法: module AppExample { import ITimeoutService = angular.ITimeoutService; import ILogService = angular.ILogService; class
nvPanel
)控制器(即PanelController
)在子组件控制器中的show
方法:
module AppExample {
import ITimeoutService = angular.ITimeoutService;
import ILogService = angular.ILogService;
class LegendController implements angular.IComponentController {
private $timeout: ITimeoutService;
private $log: ILogService;
// Parent component reference
panelComponent: PanelComponent;
static $inject = [
"$timeout",
"$log",
];
constructor(
$timeout: ITimeoutService,
$log: ILogService
) {
this.$timeout = $timeout;
this.$log = $log;
}
$onInit(): void {
let controller = this.panelComponent.controller;
controller.show();
}
}
class LegendComponent implements angular.IComponentOptions {
templateUrl = "/.../nv-legend.html";
controller = LegendController;
require: {
panelComponent: "^nvPanel"
};
}
angular.module("AppExample").component("nvLegend", new LegendComponent());
}
但是,panelComponent
在onInit函数中未定义(即未被AngularJS注入),尽管它在组件的选项中被标记为“必需”
这就是父组件和子组件的使用方式:
<div>
<nv-panel id="legendPanel">
...
<div id="legend-container" class="slide-out-div">
<nv-legend></nv-legend>
</div>
...
</nv-panel>
</div>
module AppExample {
export class PanelController {
constructor(...) {
...
}
show(): void {
...
}
}
export class PanelComponent implements angular.IComponentOptions {
controller = PanelController;
templateUrl = "/client/features/shared/panel/nv-panel.html";
transclude = true;
}
angular.module("AppExample").component("nvPanel", new PanelComponent());