Angular 2绑定到输入或texarea的最大长度

Mud*_*Mud 7 angular2-template angular

我可以渲染以下Angular 2组件,其中包含一个设置了maxlength的输入:

@Component({
  selector: 'app',
  template: '<input maxlength="10">',
})
export class App {
}
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,如果我尝试通过绑定设置maxlength,如下所示:

@Component({
  selector: 'app',
  template: '<input [maxlength]="maxLength">',
})
export class App {
    maxLength = 10;
}
Run Code Online (Sandbox Code Playgroud)

或者像这样:

  template: '<input maxlength="{{maxLength}}">',
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"Template parse errors: Can't bind to 'maxlength' since it isn't a known property of 'input'."
Run Code Online (Sandbox Code Playgroud)

为什么?maxlength是输入控件的完全有效属性.

这是一个实例(打开控制台以查看错误).

Mad*_*jan 30

Angular文档的摘录,

属性绑定

当我们尝试写这样的东西时,我们会痛苦地意识到这个事实:

<tr><td colspan="{{1 + 1}}">Three-Four</td></tr> We get this
Run Code Online (Sandbox Code Playgroud)

错误:

Template parse errors: Can't bind to 'colspan' since it
isn't a known native property 
Run Code Online (Sandbox Code Playgroud)

如消息所示,元素没有colspan属性.它具有"colspan"属性,但插值和属性绑定只能设置属性,而不能设置属性.

我们需要属性绑定来创建和绑定到这些属性.

属性绑定语法类似于属性绑定.我们不是括号之间的元素属性,而是以前缀attr开头,后跟一个点(.)和属性的名称.然后,我们使用解析为字符串的表达式设置属性值.

这是关于属性和属性之间差异的相关Stack Overflow帖子.

你可以尝试下面,

@Component({
  selector: 'app',
  template: '<input [attr.maxlength]="maxLength" >',
})
export class App {
    maxLength = '10';
}


@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App ],
  bootstrap: [ App ]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

这是更新的,它的作品Plunker !!

希望这可以帮助!!