fullTemplateTypeCheck для Angular 9. Несовместимые типы - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть рабочее приложение Angular (+ Angular Material) 9.1.0. Я попытался добавить дополнительную проверку типов в tsconfig. json для моего проекта:

  "angularCompilerOptions": {
    "strictTemplates": true,
    "fullTemplateTypeCheck": true
  },

И у меня была ошибка в этом элементе шаблона во время сборки:

  <textarea matInput placeholder="{{ 'test.description' | translate}}" matAutosizeMinRows="3" matTextareaAutosize formControlName="description"></textarea>

Сообщение об ошибке является правильным:

error TS2326: Types of property 'matAutosizeMinRows' are incompatible.
  Type 'string' is not assignable to type 'number'.

Поскольку matAutosizeMinRows объявлен как число:

export declare class MatTextareaAutosize extends CdkTextareaAutosize {
    get matAutosizeMinRows(): number;

Однако, если заменить «3» на 3 в шаблоне, ошибка все равно останется.

Единственный способ исправить это - заключить свойство в квадратные скобки:

  <textarea matInput placeholder="{{ 'test.description' | translate}}" [matAutosizeMinRows]="3" matTextareaAutosize formControlName="description"></textarea>

Это правильное поведение?

1 Ответ

1 голос
/ 04 апреля 2020

Да, это правильное поведение.

Без квадратных скобок вы устанавливаете значение с помощью атрибута HTML. По определению это строка.

В квадратных скобках вы передаете буквальное значение, которое является числом.

DEMO: https://stackblitz.com/edit/angular-ogvuhj

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...