Перевести сервис в Angular TS файл - PullRequest
0 голосов
/ 04 марта 2019

Я использую угловой канал и созданный сервис, который является рабочим файлом с HTML-кодом.Но они не работают, когда я использую его с файлом TS.

Служба перевода

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class TranslateServices {
  data: any = {};

  constructor(private http: HttpClient) {
  }

  async use(lang: string): Promise<{}> {
    return await new Promise<{}>((resolve, reject) => {
      const langPath = `assets/i18n/${lang || 'en'}.json`;
      this.http.get<{}>(langPath).subscribe(
        translation => {
          this.data = Object.assign({}, translation || {});
          resolve(this.data);
        },
        error => {
          this.data = {};
          resolve(this.data);
        }
      );
    });
  }
}

Служба перевода

import { Pipe, PipeTransform } from '@angular/core';
import { TranslateServices } from '../../../shared/services';
    @Pipe({ name: 'translate', pure: false })
    export class TranslatePipe implements PipeTransform {
      constructor(private translate: TranslateServices) { }
      transform(key): any {
        // console.log('this.translate.data[key]', this.translate.data[key]);
        return this.translate.data[key] || key;
      }
    }

это прекрасно работает в html

<input type="text"  placeholder="{{ 'lbl.SearchByCodeOrStatus' | translate }}" class="form-control border-0">

, но когда я использую это, я все ломаюсь

import { TranslateService } from '@ngx-translate/core';
this.translate.get([menuItem.title]).subscribe(translations => {
   menuItem.title: translations[menuItem.title]
});

1 Ответ

0 голосов
/ 04 марта 2019
  • сначала создайте службу перевода или помощник.
  • затем создайте канал, который использует эту службу для вывода данных.

для использования переводчика в файле шаблона.функция трубы.чтобы использовать его внутри файла ts, используйте сервисную или вспомогательную функцию.

назначение канала не должно использоваться внутри файла ts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...