ngx-translate с использованием переменной в качестве параметра в Angular 7 - PullRequest
1 голос
/ 25 июня 2019

У меня проблема с NGX-Translate в Angular7.

Я пытаюсь перевести фразу с параметром.Если параметр жестко запрограммирован, он работает, но если параметр является переменной, это не так.

app.component.ts

import { Component, OnInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  hardcoded: string;
  fromVariable: string;
  days: '30';

  constructor(private translate: TranslateService) { }

  ngOnInit() {
    this.translate.setDefaultLang('en');
    this.translate.use('en');

   // Value Hardcoded - THIS WORKS
    this.translate.get('UPCOMING_RENEWALS', { output: '30' }).subscribe((s: string) => {
      this.hardcoded = s;
    });
    // value from variable - THIS DOESN'T
    this.translate.get('UPCOMING_RENEWALS', { output: this.days }).subscribe((s: string) => {
      this.fromVariable = s;
    });

  }
}

app.component.html

<h1>
    {{ 'UPCOMING_RENEWALS' | translate :{output:'30'} }}</h1>
outputs: Upcoming Renewals (30 days)


<h1>{{hardcoded}}</h1>
outputs: Upcoming Renewals (30 days)

<h1>{{fromVariable}}</h1>
outputs: Upcoming Renewals ({{output}} days)

en.json

{
  "UPCOMING_RENEWALS": "Upcoming Renewals ({{output}} days)",
}

Вот пример для stackBlitz

1 Ответ

1 голос
/ 25 июня 2019

Это из-за days: '30'. Вы неправильно инициализировали days, вы просто установили его тип на '30', что означает, что вы не можете установить days, кроме '30'.

Полагаю, это опечатка. Измените его на days = '30'

...