Мне нужно сериализовать ссылку (а не экземпляр) углового компонента. Например, если у меня есть следующий компонент:
@Component({
selector: 'component-selector',
template: ...
})
export class CustomComponent {
Мне нужно сохранить ссылку на него следующим образом:
class CustomClass {
component: Type<CustomComponent> = CustomComponent;
...
}
На данный момент все работает как положено, и я могу использовать компонент так, как мне нужно. Теперь проблема в том, что мне нужно сериализовать CustomClass
и сохранить его в файл.
Когда я пытаюсь сделать JSON.stringify(customClass)
, поле component
исчезает, и если я пытаюсь разобрать строку с помощью JSON.parse
, в результате получается экземпляр customClass
с undefined
component
.
Я нашел это суть для сериализации и десериализации функции, но у меня это не сработало (я думаю, хотя интерфейс Type
расширяется от Function
, это не одно и то же, не так ли?)
Как я могу сериализовать компонент Angular?
@PauloPedroso Я нашел обходной путь, см. ответы
Я нашел обходной путь (единственное решение, которое я нашел для этого) и создаю сопоставление строки (идентификатора) с компонентом. Например, в какой-то части кода у нас есть что-то вроде этого:
let mapping = [
{name: 'component1', component: Component1},
{name: 'component1', component: Component1},
...
]
Итак, когда объект преобразован в строку, вы можете сохранить строку, которая идентифицирует компонент, и когда вы снова преобразуете его в объект, вы ищете ссылку на компонент на карте. Он работает отлично!
Я тоже ищу ответ.