How to highlight an input field text in angular 6

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP



How to highlight an input field text in angular 6



This is (custom.component.html) file


<input type="text" [(ngModel)]="name" (ngModelChange)="onNameChange()">
<div *ngFor="let s of filteredScreenshots">
s
</div>


<mat-card class="example-card" *ngFor="let filteredScreen of
filteredScreens" let i = index>

<mat-card-header>
<div mat-card-avatar class="example-header-image" >
<img mat-card-image class="list-img" src="filteredScreen?.img" >
</div>
<mat-card-content class="names"><b> filteredScreen?.name </b></mat-card-content>
</mat-card-header>
</mat-card>



This is(customer.component.ts)


import Component, OnInit from '@angular/core';
import Http from '@angular/http';
import map from 'rxjs/operators'
import * as _ from 'lodash';


@Component(
selector: 'ylb-customer',
templateUrl: './customer.component.html',
styleUrls: ['./customer.component.css']
)

export class CustomerComponent
spaceScreens: Array<any>;
filteredScreens = ;
name: string;


constructor(private http:Http)
this.http.get('assets/app.json').pipe(
map(response => response.json().screenshots)
)
.subscribe(res =>
this.spaceScreens = this.sortByName(res); //this is what we filter against
this.filteredScreens = this.sortByName(res);//init with full list
);


onNameChange()
this.filteredScreens=_.filter(this.spaceScreens,(item)=>
console.log(this.name)
return item.name.toLowerCase().indexOf(this.name.toLowerCase())>-1;
);

sortByName = function(users)
const byName = function(user1,user2)
return user1.name.localeCompare(user2.name);
;
return users.slice().sort(byName);
;




This is the (app.json)json file present inside assets folder



"screenshots":[


"img":"assets/img/json_2.jpg",
"name":"Virat Kohli"
,


"img":"assets/img/json_2.jpg",
"name":"Joe Root"





]



filtering is happening fine and it is displaying the json data(name) in alphabetical order.I want to highlight the text entering in the field like in mobile contact list as like in attached image.



enter image description here



Tried many resources but no result




1 Answer
1



In Chrome and also in other Browsers (see here) you can use a component like this:


import Pipe, PipeTransform from '@angular/core';

@Pipe(
name: 'highlight'
)

export class HighlightSearch implements PipeTransform

transform(value: string, args: string): any
if (args && value)
value = String(value); // make sure its a string
const startIndex = value.toLowerCase().indexOf(args.toLowerCase());
if (startIndex !== -1)
const matchingString = value.substr(startIndex, args.length);
return value.replace(matchingString, "<mark>" + matchingString + "</mark>");



return value;




To use like this:


<mat-card-content class="names"><b [innerHTML]="filteredScreen.name | highlight: name"></b></mat-card-content>





Thank you so much.It worked.
– Prashanth GH
Aug 6 at 16:28






How can i change highlight color,mean <mark> tag color
– Prashanth GH
Aug 6 at 16:32





please mark my answer as answer :) w3schools.com/tags/tag_mark.asp on the bottom of the page is an example
– Joniras
Aug 6 at 16:33





Ya marked as correct.
– Prashanth GH
Aug 6 at 16:34






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Popular posts from this blog

Firebase Auth - with Email and Password - Check user already registered

Dynamically update html content plain JS

How to determine optimal route across keyboard