Angular2 maxLength for textarea作为变量

elz*_*zoy 6 variables textarea angular

要设置textarea的最大字母数,我们通过编写来实现: <textarea maxLength="50"></textarea>

但是,我可以做下面的事吗?有什么办法吗?

import { Component } from '@angular/core';

@Component({
  moduleId: module.id,
  selector: 'app-create-offer-page',
  template: `
    <textarea maxLength="textareaLength"></textarea>
  `
})
export class CreateOfferPageComponent {
  textareaLength: number = 50;
}
Run Code Online (Sandbox Code Playgroud)

我问,因为那不起作用.

Gün*_*uer 18

您需要[]Angular将其解释为绑定

 [maxLength]="textareaLength"
Run Code Online (Sandbox Code Playgroud)

这应该适用于本机验证.Angular2验证器当前不支持动态值.

  • `maxLength`是一个原生属性,因此可以直接与`[maxLength]`绑定.例如,如果要设置像`data-id`这样的自定义属性,可以使用带有`[attr.data-id]`的绑定.最后,它对那些原生属性没有任何影响. (2认同)
  • 如果没有`[attr.然后添加它;-)它不起作用.大多数属性都反映到DOM中,因此如果设置属性,则会创建属性,反之亦然.对于其他人,这不起作用,例如`<lable for ="....">``不起作用,因为属性名称是`htmlFor`,属性名称是for.如果它是自定义组件或指令的`@Input()`并且你在DOM上不需要它(例如将它用于CSS选择器)那么最好不要添加`[attr.因为它意味着添加到DOM只比属性慢得多. (2认同)

rin*_*usu 7

当然,这很简单 - 只需使用属性绑定:

<textarea [attr.maxLength]="textareaLength"></textarea>
Run Code Online (Sandbox Code Playgroud)


Luc*_*edo 6

在@rinukkusu提供的答案上扩展一点,您甚至可以通过添加三元运算符来使属性可选,如下所示:

<textarea [attr.maxLength]="textareaLength > 0 ? textareaLength : null"></textarea>
Run Code Online (Sandbox Code Playgroud)

null值将元素中的属性完全删除,这是我需要的。