Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 11966|Отговор: 0

[Ъглова] angular2 *ngIf срещу [скрито]

[Копирай линк]
Публикувано в 22.05.2019 г. 14:02:02 ч. | | |
В AngularJS 1, ако искате да превключвате състоянието на дисплея на DOM елементите, вероятно ще използвате вградените команди в AngularJS 1, като ng-show или ng-hide:

Пример от AngularJS 1:

В angular2 новият синтаксис на шаблона ви позволява да свързвате изрази с всякакви родни свойства на DOM елементите. Тази абсолютно страхотна функция отваря безкрайни възможности. Едно от тях е да се обвърже изразът с нативното скрито свойство, което е малко като ng-show, и също така да се задава display: none за елемента:

[скрит] пример за angular2 (не се препоръчва):

На пръв поглед горният пример изглежда като ng-show в AngularJS 1. Всъщност, те са го направили! важни разлики.

И ng-show, и ng-hide контролират състоянието на показване на DOM елементите чрез CSS клас, наречен ng-hide, който просто задава елемента да display: none. Ключът тук е, че AngularJS 1 е добавен към класа ng-hid! важно, което коригира приоритета на класа, така че да може да запише присвояването на атрибута за показване на елемента от други стилове.

Връщайки се към този пример, браузърът реализира стилът display: none върху нативния скрит атрибут. Повечето браузъри не го използват! Важно е да се коригира приоритетът му. Следователно, контролирането на състоянието на дисплея на елемент чрез [hidden]="expression" лесно може да бъде случайно презаписано от други стилове. Например: ако напиша такъв стил за този елемент другаде, display: flex, това има предимство пред нативното скрито свойство (виж тук).

Поради тази причина обикновено използваме *ngIf, за да превключим състоянието на присъствие на елемента и да постигнем същата цел:

*ngIf пример за angular2 (препоръчително):

За разлика от естественото скрито свойство, *ngIf в angular2 не е ограничено по стил. Без значение какъв тип CSS напишете, тя е в безопасност. Въпреки това е необходимо да се спомене, че *ngIf не контролира състоянието на дисплея на елемента, а директно постига ефекта на показване или не чрез добавяне/премахване на елемента от шаблона.

Разбира се, можете също да добавите скрит приоритет към скрития атрибут на елемент, като използвате глобален стил, като display: none !important, за да постигнете този ефект. Може да се запитате, след като angular групата познава тези проблеми, защо просто не добавите глобален най-висок приоритет скрит стил към hidden in the framework? Отговорът е, че не можем да гарантираме, че добавянето на глобални стилове е най-добрият избор за всички приложения. Тъй като този подход всъщност нарушава функционалността, която разчита на нативни скрити възможности, оставяме избора на инженерите.





Предишен:GitHub добавя лиценз с отворен код към своите проекти
Следващ:Не мога да се свържа с 'ngModel', тъй като това не е известно свойство на 'input'...
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com