Я пытаюсь перевести элементы из «p-splitButton», но не могу, потому что «элементы» — это объект. Как мне это сделать?
[model] = "items | translate"
app.component.html
<p-splitButton
label = "Save"
icon = "pi pi-plus"
(onClick) = "save('info')"
[model] = "items | translate"
></p-splitButton>
app.component.ts
import { Component} from '@angular/core';
import {MenuItem} from 'primeng/api';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
})
export class AppComponent {
items: MenuItem[];
constructor() {}
ngOnInit() {
this.items = [
{label: 'Example 1', icon: 'pi pi-info', url: 'http://angular.io'},
{label: 'Example 2', icon: 'pi pi-info', url: 'http://angular.io'},
];
}
}
Или вы можете создать новый канал под названием translateArray со своей собственной логикой :)





Вы можете использовать нечистый канал, чтобы обнаруживались изменения в объекте, а затем переводить метку и переназначать значение этого
@Pipe({
name: 'translate',
pure: false,
})
export class TranslatePipe implements PipeTransform {
transform(value: MenuItem[]): any {
value.forEach(val => val.label = translateFn(val.label))
return value
}
}
К сожалению, вы не можете сделать это с каналом
translate, потому что PrimeNg не дал способа сделать это, но вы можете обновлять ключ метки вitemsв своем компоненте всякий раз, когда меняется перевод, я знаю, что это некрасиво, но я могу только думать об этом или, может быть, вы можете создать свой собственный компонент