如何将通过消息服务传入的字符串加粗?
How do I bold a String that I'm passing in through a message service?
我的服务如下所示:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class MessageService {
messages: string[] = [];
add(message: string) {
this.messages.push(message);
}
clear() {
this.messages = [];
}
}
关联组件的 HTML 如下所示:
<div>
<h4>Status Messages:</h4>
<div *ngFor='let message of messageService.messages'> {{message}} </div>
</div>
我通常在其他组件中这样调用它:
this.messageService.add('Completed all current actions.')
假设我只想将“已完成”这个词加粗。关于如何做到这一点有什么想法吗?
你只需要改变你的数据模型。
可以定义Message,表示单句,单词数组,需要高亮。
export interface Message {
text: string;
wordsToHighlight: string[];
}
然后在消息数组的迭代过程中,创建 html 字符串并使用 HTML 元素的内部 HTML 或外部 HTML 属性 来呈现它。
注意下面的getHighlightedText
方法。
您的组件可能如下所示:
@Component({
selector: 'app-demo',
template: `
<div *ngFor="let message of messages" [outerHTML]="getHighlightedText(message)"></div>
`
})
export class DemoComponent implements OnInit {
messages: Message[];
constructor(private readonly messageService: MessageService) {}
ngOnInit(): void {
this.messages = this.messageService.messages;
this.messageService.add({ text: 'Completed all current actions', wordsToHighlight: ['all', 'actions'] })
}
getHighlightedText(message: Message): string {
const words = message.text.split(' ');
return words.map((word) => {
const highlight = message.wordsToHighlight.some((wordToHighlight) => word.toLowerCase() === wordToHighlight.toLowerCase());
if (highlight) {
return `<b>${word}</b>`;
} else {
return word;
}
}).join(' ');
}
}
消息服务:
@Injectable({
providedIn: 'root',
})
export class MessageService {
messages: Message[] = [];
add(message: Message) {
this.messages.push(message);
}
clear() {
this.messages = [];
}
}
我的服务如下所示:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class MessageService {
messages: string[] = [];
add(message: string) {
this.messages.push(message);
}
clear() {
this.messages = [];
}
}
关联组件的 HTML 如下所示:
<div>
<h4>Status Messages:</h4>
<div *ngFor='let message of messageService.messages'> {{message}} </div>
</div>
我通常在其他组件中这样调用它:
this.messageService.add('Completed all current actions.')
假设我只想将“已完成”这个词加粗。关于如何做到这一点有什么想法吗?
你只需要改变你的数据模型。
可以定义Message,表示单句,单词数组,需要高亮。
export interface Message {
text: string;
wordsToHighlight: string[];
}
然后在消息数组的迭代过程中,创建 html 字符串并使用 HTML 元素的内部 HTML 或外部 HTML 属性 来呈现它。
注意下面的getHighlightedText
方法。
您的组件可能如下所示:
@Component({
selector: 'app-demo',
template: `
<div *ngFor="let message of messages" [outerHTML]="getHighlightedText(message)"></div>
`
})
export class DemoComponent implements OnInit {
messages: Message[];
constructor(private readonly messageService: MessageService) {}
ngOnInit(): void {
this.messages = this.messageService.messages;
this.messageService.add({ text: 'Completed all current actions', wordsToHighlight: ['all', 'actions'] })
}
getHighlightedText(message: Message): string {
const words = message.text.split(' ');
return words.map((word) => {
const highlight = message.wordsToHighlight.some((wordToHighlight) => word.toLowerCase() === wordToHighlight.toLowerCase());
if (highlight) {
return `<b>${word}</b>`;
} else {
return word;
}
}).join(' ');
}
}
消息服务:
@Injectable({
providedIn: 'root',
})
export class MessageService {
messages: Message[] = [];
add(message: Message) {
this.messages.push(message);
}
clear() {
this.messages = [];
}
}