CSS-ის გამოყენება TypeScript-ის ცვლადის კონკრეტულ ნაწილზე ინტერპოლაციის საშუალებით Angular-ში


ვთქვათ, მაქვს ცვლადი სახელად data ფაილში app.component.ts, რომელიც არის ტიპის :string.

app.component.html-ში ვაჩვენებ data-ს მნიშვნელობას UI-ში სტრიქონული ინტერპოლაციის გამოყენებით, მაგალითად {{data}}.

ახლა ჩემი კითხვა ასეთია: როცა მნიშვნელობას UI-ში ვაჩვენებ, უნდა გამოვიყენო გარკვეული css კონკრეტული ასოებზე, რომლებიც data ცვლადშია.

მაგალითად:

აპპ.component.ts

data : string = "stack overflow"

აპპ.კომპონენტი.html

<p>{{data}}</p>

როგორ გამოვარჩიოთ სიტყვა overflow-ის ფონის ფერი, გამოყენებით css?. და მსმენია, რომ Pipes შეიძლება გამოიყენოთ მნიშვნელობის შესაცვლელად. მაგრამ აქ მე მჭირდება css-ის გამოყენება.

და კიდევ ერთი შეზღუდვა არსებობს, თავდაპირველად მნიშვნელობა ბრაუზერში იქნება ნაჩვენები; გამოტანილი სიტყვა მოვა input ყუთიდან.

პასუხი #1

თქვენ შეგიძლიათ გამოიყენოთ რაღაც მსგავსი:

.ts

  highlightKeyWord(sentence: string, keyWord: string) {
      sentence = sentence.replace(keyWord, 
          `<span style="background-color: #35a5f8;">${keyWord}</span>`);
      return this.sanitizer.bypassSecurityTrustHtml(sentence);
  }

.html

  <p [innerHTML]="highlightKeyWord('hello world', 'world')"></p>

პასუხი #2

ერთ-ერთი გზა არის გამოყენებით მილის, რათა განსაზღვრული სიტყვა განაწილდეს ინდივიდუალურ <span> ელემენტებზე:

@Pipe({
  name: 'letterByLetter'
})
export class LetterByLetter implements PipeTransform {
  transform(value: string): string {
    return value
      .split('')
      .map((letter) => {
        return `<span>${letter}</span>`;
      })
      .join('');
  }
}

შემდეგ კომპონენტში არსებობს შესაძლებლობა გამოიყენოთ პაიპი ასეთ ფორმაში <div [innerHTML]="data | letterByLetter"></div>. გაითვალისწინეთ, მე გამოვიყენე innerHtml, მაგრამ შეგიძლიათ გამოიყენოთ DomSanitizer-ის ნაცვლად - რაც უკეთესი იქნებოდა)

ამის შემდეგ შეგიძლიათ გადაწყვიტოთ, როგორ უნდა გამოიყურებოდეს span ელემენტი. შეგიძლიათ პირდაპირ მიუთითოთ ან კლასი, ან სტილი.

გისურვებ წარმატებას!