<div class="form-group">
<label class="col-sm-3 control-label">{{ label }}</label>
<div class="col-sm-9">
<input [(ngModel)]="value" class="form-control">
</div>
</div>`
이 큰 작업을하고 난 그냥 @Input
를 사용하여 "라벨"속성에 액세스 할 수 있습니다 :
@Component({...})
export class MyInputComponent {
@Input() label = '';
이제는 몇 가지 속성에 대해 설명합니다. 그러나 HTML 표준 <input>
태그는 문자 그대로 type
, min
, max
, placeholder
...과 같은 수십 가지 속성을 가지고 있으며 가능한 모든 모든 속성을 MyInputComponent의 @Input
속성으로 정의하고 싶지 않습니다.
대신 동적으로 <my-input>
의 속성을 반복하여 내 템플릿의 <input>
요소에 복사하고 싶습니다.
constructor(eref: ElementRef) {
console.log("***", eref.nativeElement);
}
을하지만 접근 nativeElement 몇 가지 이유 (https://angular.io/docs/js/latest/api/core/index/ElementRef-class.html 참조)에 대한 나쁜 관행으로 권장되지 않습니다 : 내가 그 nativeElement 속성을 생성자로하여 elementRef를 사용하여 다음에 액세스하여 DOM 요소의 속성 목록에 액세스 할 수 있습니다 알고 있습니다.
그래서 질문 : 기본 브라우저 DOM을 직접 읽지 않고 <my-input>
의 속성 목록에 액세스 할 수있는 방법이 있습니까?
마찬가지로 중립적 인 방식으로 속성 목록을 얻은 다음 템플릿의 <input>
태그에 어떻게 적용 할 수 있습니까?
고마워요, 멋지 네요, 제가 기사를 읽을 것입니다. 나는 transclusion에 대해 들었지만 결코 실제로 이것에 대해 알지 못했습니다. 어쨌든 저는 깨끗하고 중립적이며 모국어가 아닌 방식으로 Angular 2 구성 요소의 속성에 액세스 할 수있는 방법이 있는지 궁금합니다. –
나는 transclusion을 사용하려고했지만, transcluded 입력이'class = "form-control"과 같은 부트 스트랩 설정을 필요로하기 때문에 충분하지 않습니다. 따라서 매번 구성 요소 사용자가 매번 그러한 코드를 추가하도록 강요하거나 DOM을 조작하여 Bootstrap 클래스를 수동으로 추가해야합니다. –
P. 나는 또한 ' '을 시도했지만, 변환 된 에는 아무런 영향을 미치지 못했습니다. –