Angular에서 하이라이트 구현
11018 단어 AngularTypeScript
이번은 angular-text-input-highlight 를 참고로 구현.
개발 환경
사용한 라이브러리
구현
npm에서 설치
$ npm install --save angular-text-input-highlight
앱 어딘가에 스타일시트 포함
angular.json
"styles": [
node_modules/angular-text-input-highlight/text-input-highlight.css
],
module에 추가
sample.module.ts
import { NgModule } from '@angular/core';
import { TextInputHighlightModule } from 'angular-text-input-highlight';
@NgModule({
imports: [
TextInputHighlightModule
]
})
export class SanpleModule {}
html 구현
하이라이트 함수를 호출하기 위해 임시 버튼을 설치
sample.component.html
<button class="btn" (click)="addTags()">
<i aria-hidden="true">ハイライトボタン</i>
</button>
<div mwlTextInputHighlightContainer class="form-group" >
<textarea
mwlTextInputElement
rows="4"
class="form-control"
[(ngModel)]="sampleText"
#textarea
>{{ sampleText }}
</textarea>
<mwl-text-input-highlight
[tags]="tags"
[tagCssClass]="'bg-blue'"
[textInputElement]="textarea"
>
</mwl-text-input-highlight>
</div>
css 구현
sample.component.scss
.bg-blue {
background-color: lightblue;
}
.bg-pink {
background-color: lightcoral;
}
textarea {
width: 500px;
}
ts 파일 구현
sample.component.ts
import { ViewEncapsulation } from '@angular/core';
import { HighlightTag } from 'angular-text-input-highlight';
@Component({
selector: 'app-sample',
templateUrl: './sample.component.html',
styleUrls: ['./sample.component.scss'],
encapsulation: ViewEncapsulation.None,
})
export class SampleComponent implements {
sampleText: string = 'Hello @mattlewis92 how are you today?\n\nLook I have a #different background color!';
tags: HighlightTag[] = [];
public addTags(): void {
this.tags = [];
const matchMentions = /(@\w+) ?/g;
let mention;
// tslint:disable-next-line
while ((mention = matchMentions.exec(this.sampleText))) {
this.tags.push({
indices: {
start: mention.index,
end: mention.index + 1,
},
data: mention[1],
});
}
const matchHashtags = /(#\w+) ?/g;
let hashtag;
// tslint:disable-next-line
while ((hashtag = matchHashtags.exec(this.sampleText))) {
this.tags.push({
indices: {
start: hashtag.index,
end: hashtag.index + hashtag[1].length,
},
cssClass: 'bg-pink',
data: hashtag[1],
});
}
}
보충
while ((mention = matchMentions.exec(this.sampleText)))
동작 확인
버튼을 누르기 전
버튼을 누른 후
마침내
그 외에도 Angular에서 하이라이트가 가능한 라이브러리가 있었지만, 이것이 가장 원활하게 구현할 수있었습니다.
Reference
이 문제에 관하여(Angular에서 하이라이트 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mtsk/items/d321ea58ad9ffe1ef6e8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Angular에서 하이라이트 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mtsk/items/d321ea58ad9ffe1ef6e8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)