Я создаю класс канала, который get-member-ship-level.pipe.ts :
import { Pipe, PipeTransform } from '@angular/core';
import { UserService } from '../user.service';
@Pipe({
name: 'getMemberShipLevel',
pure: true
})
export class GetMemberShipLevelPipe implements PipeTransform
{
transform(value: number, args?: any): any
{
return this.getMemberShipLevel(value);
}
constructor(private userService: UserService) { }
ngOnInit()
{
localStorage.removeItem("aze");
}
getMemberShipLevel(id: number): String
{
this.userService.getSexeLibelleByIdUser(id)
.subscribe(data =>
{
let aa = data as string;
console.log(" ________________ A:" + aa);
localStorage.removeItem("aze");
localStorage.setItem("aze", aa);
console.log("________________ B:" + localStorage.getItem("aze"));
}, error => console.log(" ________________ I GOT ERROR" + error));
let sexe = localStorage.getItem("aze");
console.log("Id: " + id+ " ________________ C: " + sexe);
return sexe;
}
}
И get-member-ship-level.pipe.spec.ts со ссылкой на нить, предложенную сэром @ GabrielMETZGER :
import { GetMemberShipLevelPipe } from './get-member-ship-level.pipe';
import { HttpClient } from '@angular/common/http';
import { DomSanitizer } from '@angular/platform-browser';
import { UserService } from '../user.service';
import { inject, TestBed } from '@angular/core/testing'
describe('GetMemberShipLevelPipe', () => {
let pipe: GetMemberShipLevelPipe
beforeEach(() => {
TestBed
.configureTestingModule({
providers: [UserService]
})
})
it('should create an instance', inject([UserService], (translate: UserService) => {
pipe = new GetMemberShipLevelPipe(translate)
expect(pipe).toBeTruthy()
}))
})
А в user.service.ts у меня есть:
getSexeLibelleByIdUser(id: number): Observable<String>
{
return this.http.get(`${this.baseUrl}/users/id/${id}`, {responseType: 'text'});
}
getUsersList(): Observable<any>
{
return this.http.get(`${this.baseUrl}/users`);
}
И users-list.component.html is
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Sexe</th>
</tr>
</thead>
<tbody *ngIf="!loader">
<tr *ngFor="let user of userbs | async" style="width: 1500px;">
<td>{{user.name}}</td>
<td>{{user.id | getMemberShipLevel}}</td>
</tr>
</tbody>
</table>
, где userbs
определено в users-list.component.ts , например:
this.userbs = this.userService.getUsersList();
Моя проблема в том, что я получил одно и то же значение для разных строк таблицы, как представлено this output
- Получил : Мужской Мужской. (НЕПРАВИЛЬНЫЙ ВЫХОД)
- Ожидаемый : мужчина, женщина. (ПРАВИЛЬНЫЙ ВЫХОД)
Не могли бы вы сказать мне, как я пропустил?
Заранее спасибо.