Раньше я был на Angular 13, мой компонент работал корректно! С тех пор я обновился до других версий Angular, сейчас это версия 16. И я хотел исправить warning, потому что у меня была проблема с синтаксисом.
src/app/.../annexes.component.html:6:65 - warning NG8107: The left side of this optional chain
operation does not include 'null' or 'undefined' in its type, therefore the '?.'
operator can be replaced with the '.' operator.
<h2 *ngIf = "annexeDetails">{{ annexeDetails?.TITRE }} - {{ id }}</h2>
src/app/.../annexes.component.ts:15:16
templateUrl: './annexes.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component AnnexesComponent.
И
Warning: src/app/.../corporate-actions-details-confirm-modal/corporate-actions-details-confirm-modal.component.html:32:60 -
warning NG8107: The left side of this optional chain operation does not include 'null'
or 'undefined' in its type, therefore the '?.' operator can be replaced with the '.' operator.
32 - {{ ostDetail?.LIMITEDATE | date: "d MMMM y" }}.
~~~~~~~~~~
src/app/.../corporate-actions-details-confirm-modal/corporate-actions-details-confirm-modal.component.ts:14:16
14 templateUrl: './corporate-actions-details-confirm-modal.component.html',
я заменил
<h2 *ngIf = "annexeDetails">{{ annexeDetails?.TITRE }} - {{ id }}</h2>
С
<h2 *ngIf = "annexeDetails">{{ annexeDetails.TITRE }} - {{ id }}</h2>
И второй
{{ ostDetail?.LIMITEDATE | date: "d MMMM y" }}
С
{{ ostDetail.LIMITEDATE | date: "d MMMM y" }}
Но с этими новыми модификациями это не работает, потому что ostDetail может быть null или undefined.
Я не знаю, как решить эту проблему. Мне придется вернуться к версии 13?
Это предупреждение объяснено в Angular Docs.
Привет Тортила, Да по этому компоненту. export class CorporateActionsDetailsConfirmModalComponent implements OnInit, OnDestroy { private unsubscribe$ = new Subject<void>(); @Input() ostDetail!: Ost; почему?





Как вы подтвердили в комментариях, в коде вашего шаблона есть @Input() ostDetail!: Ost;.
Восклицательный знак — это ненулевой оператор утверждения. Вы сообщаете компилятору, что предоставляете ненулевое и не неопределенное значение. Но ты?
Я предполагаю, что у вас есть что-то вроде [ostDetail] = "ostDetail$ | async" в родительском компоненте. В этом случае ostDetail может иметь значение null до тех пор, пока наблюдаемое ostDetail$ не выдаст значение. Вы можете исправить это, используя *ngIf или набрав Ost | null.
Я рекомендую вам использовать строгий режим в Angular. Поначалу это может раздражать, но это действительно окупается.
В качестве бонуса за использование Angular 16 вы можете добавить обязательную опцию: @Input({ required: true }).
Спасибо большое, моя проблема решена.
Есть ли где-нибудь в вашем коде
ostDetail!(с восклицательным знаком)?