사용자 입력 (텍스트)을 서비스로 보내고이 텍스트의 풍성한 버전을받는 구성 요소가 있습니다. 일부 단어가 정보로 풍부 해지는 풍부한 의미. 서버는 원본 텍스트와 원본 텍스트의 시작 및 끝 인덱스가 각각있는 풍부한 하위 문자열 목록을 제공하므로 원래 텍스트에서 찾을 수 있습니다.다른 구성 요소 안에 동적으로 구성 요소를 추가하십시오.
이제 강조 표시된 문구가 포함 된 원본 텍스트를 추가 정보가 표시되는 popover가있는 단추로 표시하려고합니다.
Angular 1에서 필자는 발견 된 구문을 반복적으로 템플릿을 만들고 비 - 풍부 구문 사이에 각각에 대해 새 단추를 만드는 지시문을 사용했습니다. $ compile()을 사용하면 올바르게 표시됩니다. 버튼 자체가 자신의 지시, 그래서 코드는 다음과 같이 보았다 : 지금까지
var newButton = angular.element(
'<special-button ' +
'enriched="foundPhrases[' + i + ']" ' +
'title="\'' + original.substring(start, end)) + '\'" ' +
'position="\'bottom\'"' +
'></special-button>'
);
이 너무 좋아,하지만 난 어떻게 동적으로 각도 2.
텍스트 내에서 구성 요소를 추가하기에 방법을 발견하지 않았습니다
HTML을 생성 한 컴포넌트를 생성 한 다음 this.elementRef.nativeElement.appendChild(generated))
을 추가하여 컴포넌트의 요소에 추가합니다.
let button = this.renderer.createElement(el, 'special-button');
button.setAttribute('[enriched]', 'foundPhrases[' + i + ']');
button.setAttribute('[title]', text.substring(start, end));
button.setAttribute('[position]', '\'bottom\'');
그러나이 선이 런타임 오류를주고있다 : I 임의로와 다른 구성 요소에 내 구성 요소를 추가 할 수있는 방법
Error: Failed to execute 'setAttribute' on 'Element':
'[enriched]' is not a valid attribute name.
을 generated
을 생성하는 코드가 생성 특별한 버튼에 다음 줄을 포함 데이터 바인딩?
새 요소를 추가하는 대신 ngIf 지시어 또는 ngShow를 사용하여 더 잘 해결되지 않습니까? – charliebeckwith
당신은 정교 할 수 있습니까? 클라이언트는 렌더링 된 텍스트 안에 얼마나 많은 버튼이 있는지 알지 못하기 때문에 정적 ngIf가 너무 제한적이라고 생각합니다. – burny
중첩 된 ngrepeat를 사용하여 필요한 버튼 수를 표시하는 NgIf? – charliebeckwith