gpt4 book ai didi

javascript - 如何访问 Angular 组件 $postLink 内的元素

转载 作者:行者123 更新时间:2023-11-29 17:51:11 25 4
gpt4 key购买 nike

将这个 repo 用于 Angular 样板 https://github.com/AngularClass/NG6-starter

但我发现很难访问 Angular component$postLink 阶段内的 dom。

我是不是写错了?或者我是否必须使用对于单向绑定(bind)而言不是最佳的指令?

关于.component.js

import template from './about.html';
import controller from './about.controller';
import './about.scss';

let aboutComponent = {
restrict: 'E',
bindings: {},
template,
controller,
};

export default aboutComponent;

关于.controller.js

class AboutController {
constructor() {
this.name = 'about';
this.$postLink = ($element) => {
console.log($element); // here is when I want to utilize the element!
}
}
}

export default AboutController;

关于.js

import angular from 'angular';
import uiRouter from 'angular-ui-router';
import aboutComponent from './about.component';

let aboutModule = angular.module('about', [
uiRouter
])

.config(($stateProvider) => {
"ngInject";
$stateProvider
.state('about', {
url: '/about',
component: 'about'
});
})

.component('about', aboutComponent)
.name;

export default aboutModule;

关于.html

<section>
<navbar></navbar>
<h1>{{ $ctrl.name }}</h1>
<section>
About us.
</section>
</section>

最佳答案

您无法从 $postLink 生命周期 Hook 中获取 $element(指令元素)。您必须在 Controller constructor 中注入(inject) $element 才能在指令中获取指令 element

class AboutController {
static $inject = ["$element"]

constructor($element) {
this.name = 'about';
this.$element = $element;
}
// better move out $postLink outside controller.
$postLink = () => {
console.log($element);
}
}

导出默认的AboutController;

关于javascript - 如何访问 Angular 组件 $postLink 内的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43614630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com