gpt4 book ai didi

typescript - aurelia with typescript - 类型 'style' 上不存在属性 'Element'

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:34 25 4
gpt4 key购买 nike

您好,我有一些与 aurelia 相关的问题。我是一个初学者,如果它微不足道,我很抱歉。

我不明白为什么我无法访问“Element”对象的“style”属性。这就是我正在做的:

@customAttribute('test-attr')
@autoinject
export class TestAttr {
private element : Element ;

constructor( element : Element) {
this.element = element ;

}
attached() {
//now i want to get a access to 'style'
this.element.style.color = 'red'
//this gives a error - Element declaration doesnt contain 'style' property
}

}

事实证明 TypeScript 中的“Element”声明不包含“style”属性,这显然是正确的但是 aurelia 有自己的 Element 扩展版本,这就是不一致之处。

好吧,我找到了一种解决方法。我手动注入(inject)Element,然后在类中声明为HTMLElement。所以它是这样的:

@customAttribute('test-attr')
@inject(Element)
export class TestAttr {
private element : HTMLElement ;

constructor( element : HTMLElement) {
this.element = element ;

}
attached() {
this.element.style.color = 'red'
//above works fine
}
}

但显然我想使用“@autoinject”,因为它简单而且看起来更优雅。我用 autoinject 做的事情有问题吗?或者它可能是一个错误?

最佳答案

Aurelia 自动注册与容器中组件关联的 DOM 元素,键 ElementHTMLElementSVGElement 的基本类型等。这使您能够@inject(Element)(或@autoinject)。

HTMLElement 键没有自动注册任何内容,这导致自动注入(inject)失败。我想不出任何比您已经使用注入(inject)装饰器所做的更优雅的方法来解决这个问题。

关于typescript - aurelia with typescript - 类型 'style' 上不存在属性 'Element',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40944012/

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