开发者问题收集

Angular - 无法读取 null 的属性‘length’”

2020-07-08
3123

我的 component.cs 如下:

import { Component, VERSION } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular ' + VERSION.major;
  profileForm = new FormGroup({
    message: new FormControl(''),
  });

  get message(): FormControl {
    return this.profileForm.get('message') as FormControl;
  }
}

component.html 是,

<form [formGroup]="profileForm">
  <textarea rows="5"
  cols="100"
  maxlength="500"
  formControlName="message"
  class="form-control">
</textarea>
</form>

{{message.value.length}} of 500 characters

我在页面加载时收到“core.js:4098 ERROR TypeError: 无法读取 null 的属性‘length’”,而不是在初始加载输入值期间。有人能帮忙吗?

3个回答

这就是安全导航操作符的用途

{{message?.value?.length || 0}} 共 500 个字符

Adrian Brand
2020-07-08

你随时可以这样做:

<span *ngIf="message && message.value">{{message.value.length}}</span> of 500 characters
Rick
2020-07-08

Typescript 中任何变量或常量的 LENGTH 属性仅当 数据不为 null undefined 时才有效,因此在 Typescript 中,处理 length 属性时请确保将数据设置为 empty (使数据长度为零)

示例:

 variableName = [];  
 constantName = {};
  
{{message?.value  ? message?.value?.length : 0 }} of 500 characters
melenchenkov
2023-01-03