Angular @Input, привязка объекта к одному объекту, но с разными именами свойств

Изменить: Вероятно, вы используете неправильную комбинацию разделяемой памяти. Сама ваша общая память является таким массивом. Таким образом, вы должны хранить отдельные многоязычные строки непосредственно в разделяемой памяти, а не большой массив с ними. а затем вытаскивать только строки, требуемые на конкретной странице. это все.

Как правило, для обработки некоторых данных программа должна «дублировать» ее, сохраняя ее в переменной. Вот какие переменные предназначены для хранения (или «дублирования») некоторых внешних данных. Например, если у вас есть какая-либо информация о пользователе в вашей базе данных, чтобы отобразить имя пользователя на веб-странице, вы должны «дублировать» эти данные, сначала сохраняя ее в переменной PHP. И так далее.

Вы первый, кто думает, что такой подход нужно изменить.

1
задан Alfa Bravo 17 January 2019 в 06:30
поделиться

2 ответа

Вы можете сделать более комфортным (но равным чудовищу)

_radioButtons:any={"Name"."",Color:"",Rank:""} //<--define a model
@Input('buttons')
set radioButtons(value: any) {
    for (let property in this.model)
    {
      //You can use x.indexOf(property)>=0 or x.endWidth(property)
      let field=Object.keys(value).find(x=>x.indexOf(property)>=0);
      this._radioButtons[property]=field?value[field]:null
    }
}
0
ответ дан Eliseo 17 January 2019 в 06:30
поделиться

Вы должны сопоставить переданную модель с вашей внутренней моделью.

Прежде всего, вам нужно использовать свойство вместо переменной класса (по крайней мере, сеттер):

// since this is plural, you probably want an array instead?
private _buttonsModel: ICustomRadioButton = {};

// we'll use "any" type, since we don't know the property names
private _radioButtons: any;

get radioButtons(): any {
    return this._radioButtons;
}

@Input('buttons')
set radioButtons(value: any) {
    this._radioButtons = value;

    // mapping: you got different solutions here, for example Object.keys etc.
    // for-in loops through all properties
    for (const property in value) {
        // now compare the property names to the ones you're looking for
        if (property.endsWith('Name') { this._buttonsModel.name = value[property]; }
        // etc...
    }
}
0
ответ дан Markus Dresch 17 January 2019 в 06:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: