이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 11966|회답: 0

[각] angular2 *ngIf vs. [숨김]

[링크 복사]
게시됨 2019. 5. 22. 오후 2:02:02 | | |
AngularJS 1에서 DOM 요소의 표시 상태를 전환하고 싶다면, 아마도 ng-show나 ng-hide 같은 내장 명령을 사용할 것입니다:

AngularJS 1 예시:

Angular2에서는 새로운 템플릿 문법으로 DOM 요소의 네이티브 속성에 표현식을 바인딩할 수 있습니다. 이 정말 멋진 기능은 무한한 가능성을 열어줍니다. 그중 하나는 표현식을 native hidden property에 결합하는 것으로, 이는 ng-show와 비슷하며, element에 대해 display: none을 설정합니다:

[숨겨짐] Angular2 예시(권장하지 않음):

처음 보기에는 위 예시가 AngularJS 1에서 ng-show로 보입니다. 사실, 그랬습니다! 중요한 차이점들.

ng-show와 ng-hide 모두 ng-hide라는 CSS 클래스를 통해 DOM 요소의 표시 상태를 제어하며, 이 클래스는 단순히 요소를 display: none로 설정합니다. 여기서 중요한 점은 AngularJS 1이 ng-hide 클래스에 추가되었다는 것입니다! 중요하다는 것을 중요하게 하여 클래스의 우선순위를 조정하여 다른 스타일에서 요소의 display 속성 할당을 덮어쓸 수 있게 합니다.

이 예시로 돌아가서, native hidden 속성의 display: none style은 브라우저에서 구현됩니다. 대부분의 브라우저는 사용하지 않습니다! 우선순위를 조정하는 것이 중요합니다. 따라서 [hidden]="expression"을 사용하여 요소의 표시 상태를 제어하면, 다른 스타일에 의해 실수로 덮어쓸 수 있습니다. 예를 들어, 이 요소에 대해 다른 곳에서 display: flex 스타일을 작성하면, 이 스타일이 네이티브 숨겨진 속성보다 우선합니다(여기 참조).

이 때문에 우리는 보통 *ngIf를 사용하여 요소 존재 상태를 토글하여 같은 목표를 달성합니다:

*ngIf angular2 예시 (권장):

네이티브 숨겨진 속성과 달리, angular2의 *ngIf는 스타일 제한이 없습니다. 어떤 종류의 CSS를 쓰든 그녀는 안전합니다. 하지만 *ngIf는 요소의 표시 상태를 제어하지 않으며, 템플릿에서 요소를 추가하거나 제거함으로써 표시 여부를 직접 결정한다는 점을 언급할 필요가 있습니다.

물론, display: none !important와 같은 전역 스타일을 사용해 요소의 숨겨진 속성에 숨겨진 우선순위를 추가할 수도 있습니다. Angular 그룹이 이런 문제를 알고 있다면, 왜 프레임워크 내 hidden 파일에 전역 최고 우선순위 hidden style을 추가하지 않느냐고 물을 수 있습니다. 답은 글로벌 스타일 추가가 모든 애플리케이션에 최선의 선택이라고 보장할 수 없다는 것입니다. 이 접근법은 네이티브 숨겨진 기능에 의존하는 기능을 실제로 깨뜨리기 때문에, 선택권은 엔지니어들에게 맡깁니다.





이전의:GitHub는 프로젝트에 오픈 소스 라이선스를 추가했습니다
다음:'ngModel'은 'input'의 알려진 속성이 아니기 때문에 바인딩할 수 없습니다...
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com