Изменить: Вероятно, вы используете неправильную комбинацию разделяемой памяти. Сама ваша общая память является таким массивом. Таким образом, вы должны хранить отдельные многоязычные строки непосредственно в разделяемой памяти, а не большой массив с ними. а затем вытаскивать только строки, требуемые на конкретной странице. это все.
Как правило, для обработки некоторых данных программа должна «дублировать» ее, сохраняя ее в переменной. Вот какие переменные предназначены для хранения (или «дублирования») некоторых внешних данных. Например, если у вас есть какая-либо информация о пользователе в вашей базе данных, чтобы отобразить имя пользователя на веб-странице, вы должны «дублировать» эти данные, сначала сохраняя ее в переменной PHP. И так далее.
Вы первый, кто думает, что такой подход нужно изменить.
Вы можете сделать более комфортным (но равным чудовищу)
_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
}
}
Вы должны сопоставить переданную модель с вашей внутренней моделью.
Прежде всего, вам нужно использовать свойство вместо переменной класса (по крайней мере, сеттер):
// 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...
}
}