Angular2 DIRECTION은 요소의 알려진 속성이 아니므로 바인딩할 수 없습니다.
새로운 @Directive by Angular CLI를 생성했는데 app.modulets로 Import 되었습니다.
import { ContenteditableModelDirective } from './directives/contenteditable-model.directive';
import { ChatWindowComponent } from './chat-window/chat-window.component';
@NgModule({
declarations: [
AppComponent,
ContenteditableModelDirective,
ChatWindowComponent,
...
],
imports: [
...
],
...
})
컴포넌트(Chat Window Component)에서 사용하려고 합니다.
<p [appContenteditableModel] >
Write message
</p>
디렉티브 내에 Angular CLI 생성 코드만 있는 경우:
import { Directive } from '@angular/core';
@Directive({
selector: '[appContenteditableModel]'
})
export class ContenteditableModelDirective {
constructor() { }
}
에러가 발생했습니다.
zone.js:388 처리되지 않은 약속 거부:템플릿 구문 분석 오류: 'appContentableModel'은 'p'의 알려진 속성이 아니므로 바인딩할 수 없습니다.
가능한 거의 모든 변경을 시도했지만, 이 각진 문서에 따라 모든 것이 작동해야 하지만 작동하지 않습니다.
도움이 필요하신가요?
속성을 대괄호로 묶는 경우[]결속하려고 하는 거겠죠그래서 당신은 그것을 선언해야 한다.@Input.
import { Directive, Input } from '@angular/core';
@Directive({
selector: '[appContenteditableModel]'
})
export class ContenteditableModelDirective {
@Input()
appContenteditableModel: string;
constructor() { }
}
중요한 건 멤버가appContenteditableModel)는, DOM 노드(이 경우는 디렉티브실렉터)의 속성으로서 지정할 필요가 있습니다.
공유 모듈을 사용하여 디렉티브를 정의하는 경우 디렉티브가 에서 정의된 모듈에 의해 선언되고 내보내기되었는지 확인합니다.
// this is the SHARED module, where you're defining directives to use elsewhere
@NgModule({
imports: [
CommonModule
],
declarations: [NgIfEmptyDirective, SmartImageDirective],
exports: [NgIfEmptyDirective, SmartImageDirective]
})
공유 모듈에서 선언된 지침에 대해서도 같은 문제에 직면해 있었습니다.폼 컨트롤을 비활성화하기 위해 이 명령을 사용합니다.
import { Directive, Input } from '@angular/core';
import { NgControl } from '@angular/forms';
@Directive({
selector: '[appDisableControl]'
})
export class DisableControlDirective {
constructor(private ngControl: NgControl) { }
@Input('disableControl') set disableControl( condition: boolean) {
const action = condition ? 'disable' : 'enable';
this.ngControl.control[action]();
}
}
올바르게 동작하려면 공유 모듈(또는 사용 중인 모듈)에서 디렉티브를 선언하고 내보냅니다.
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DisableControlDirective } from './directives/disable-control/disable-control.directive';
@NgModule({
declarations: [
DisableControlDirective
],
imports: [
CommonModule
],
exports: [DisableControlDirective],
providers: [],
bootstrap: []
})
export class SharedModule { }
이제 Shared Module을 Import하는 모든 모듈에서 이 디렉티브를 사용할 수 있습니다.
이제 반응형 폼의 제어를 비활성화하려면 다음과 같이 사용할 수 있습니다.
<input type="text" class="form-control" name="userName" formControlName="userName" appDisableControl [disableControl]="disable" />
실수로 셀렉터(appDisableControl)만 사용하여 disable param을 전달했는데 입력 파라미터를 전달하려면 위와 같이 사용해야 합니다.
나에게 수정은 지시 참조를 루트에서 이동시키는 것이었다.app.module.ts(의 행import,declarations, 및/또는exports)를 보다 구체적인 모듈로 전송합니다.src/subapp/subapp.module.ts내 컴포넌트가 속해있었어
즉, 지시문이 앵커 지시문처럼 보이므로 괄호를 제거하면 작동합니다.
실제로 브래킷을 분리해야 하는 시기와 관련된 섹션은 찾을 수 없습니다.다이나믹 컴포넌트에 관한 섹션은 1개뿐입니다.
그것을 에 적용하다
<ng-template>대괄호 없이
단, Attribute Directives 문서에서는 완전히 다루지 않습니다.
.[appContenteditableModel]와 동등해야 한다appContenteditableModel는 angular template parser가 에 따라 할 수 .@input()데이터 바인딩 또는 자동 바인딩이 아닌 경우에도 마찬가지입니다.그러나 현재 Angular Version 7에서도 보닛 아래에서 동일하게 처리되지 않은 것으로 보입니다.
언급URL : https://stackoverflow.com/questions/40705819/angular2-cant-bind-to-directive-since-it-isnt-a-known-property-of-element
'programing' 카테고리의 다른 글
| angularjs 텍스트 상자에 대문자 강제 적용 (0) | 2023.03.07 |
|---|---|
| AngularJS - templateUrl 생성에 $routeParams를 사용하는 방법 (0) | 2023.03.07 |
| 누군가가 wp wlwmanifest.xml http 요청을 했습니다만, 그 이유는 무엇입니까? (0) | 2023.03.07 |
| AngularJs - 경로 변경 이벤트 취소 (0) | 2023.03.07 |
| 클래스 org.hibernate.proxy.pojo.javassist의 시리얼라이저를 찾을 수 없습니다.자바시스트? (0) | 2023.03.07 |