$ onInit是否使用自己的作用域?

时间:2019-10-03 09:59:20

标签: angularjs typescript

HTML:

app.use(express.urlencoded());

组件:

<map street="{{firstunit.street}}"/>

我有一个使用$ onInit设置值的类。但是我不能在另一个函数中使用该值。当我调用函数@Component('CustomerService', { templateUrl: '/CustomerService/_UnitCard/MapComponent/Map.html', selector: 'map', bindings: { street: '@', } }) export class MapComponent { private x: string; public $onInit() { this.x = 'y'; } public getValue() { console.log(this.x); } } 时,我会记录“未定义”。如何使用$ onInit为class属性设置值? (将1.7与打字稿一起使用)。

1 个答案:

答案 0 :(得分:0)

请勿将自动关闭标签与组件一起使用。

̶<̶m̶a̶p̶ ̶s̶t̶r̶e̶e̶t̶=̶"̶{̶{̶f̶i̶r̶s̶t̶u̶n̶i̶t̶.̶s̶t̶r̶e̶e̶t̶}̶}̶"̶ ̶/̶>̶
<map street="{{firstunit.street}}"></map>

请参见Are (non-void) self-closing tags valid in HTML5?

从文档中:

  

生命周期挂钩

     

指令控制器可以提供以下指令,这些指令由AngularJS在指令生命周期的各个点调用:

     

$onInit()-在构造一个元素上的所有控制器并初始化它们的绑定之后(并且在此元素上的指令的pre和post链接功能之前),在每个控制器上调用。这是放置控制器初始化代码的好地方。

     

AngularJS Comprehensive Directive API Reference - Life-Cycle Hooks

$onInit函数应作为组件控制器的方法提供。将组件属性绑定到控制器后,$compile服务将调用它。

对于组件,控制器绑定到组件范围的$ctrl属性(或绑定到controllerAs选项指定的属性)。

如果getValue函数正在记录undefined,则很可能是这样做的,因为在$ em编译服务调用{{1}之前, }功能。

有关更多信息,请参见