2016-06-16 4 views
0

Я хочу динамически переключаться, какой templateUrl использовать для компонента Angular 2/Dart.Как создать динамический компонент в Angular 2 с Dart?

Я выяснил, что путь для динамического создания нового компонента для размещения templateUrl для. Существует несколько примеров того, как достичь этого, используя Angular 2 ComponentResolver с TypeScript, for example this one, но я не смог перевести их в Дарт.

В основном то, что я не в состоянии сделать проходит новый компонент из функции:

createComponentFactory(ComponentResolver resolver, 
     ComponentMetadata metadata) { 
    final cmpClass = class DynamicComponent {}; 
    final decoratedCmp = Component(metadata)(cmpClass); 
    return resolver.resolveComponent(decoratedCmp); 
} 

Проблема с этим и другими подобными подходами с Дартом, что я не могу установить class DynamicComponent {}; переменной или вернуть его из функция без получения ошибок сборки, как это:

[DirectiveProcessor]: 
    Failed with 5 errors 
Error 1: line 37, column 22 of lib/projects/project_component.dart and parts: Expected an identifier 
    final cmpClass = class DynamicComponent {}; 
        ^^^^^ 
Error 2: line 37, column 22 of lib/projects/project_component.dart and parts: Expected to find ';' 
    final cmpClass = class DynamicComponent {}; 
        ^^^^^ 
Error 3: line 37, column 22 of lib/projects/project_component.dart and parts: Expected a statement 
    final cmpClass = class DynamicComponent {}; 
        ^^^^^ 
Error 4: line 37, column 22 of lib/projects/project_component.dart and parts: Unexpected token 'class' 
    final cmpClass = class DynamicComponent {}; 
        ^^^^^ 
Error 5: line 37, column 28 of lib/projects/project_component.dart and parts: Expected to find ';' 
    final cmpClass = class DynamicComponent {}; 
          ^^^^^^^^^^^^^^^^ 

Создание нового компонента, как это общее камень преткновения для меня, когда после любой из примеров, которые я видел для создания динамической составляющей. Кто-нибудь понял, как вы можете добиться этого с Дартом?

ответ

1

Вы не можете объявлять классы inline в Dart.

Это должно делать то, что вы хотите

class DynamicComponent {} 

createComponentFactory(ComponentResolver resolver, 
     ComponentMetadata metadata) { 
    final cmpClass = DynamicComponent; 
    final decoratedCmp = Component(metadata)(cmpClass); 
    return resolver.resolveComponent(decoratedCmp); 
} 

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

+1

Большое спасибо! Это решает проблему, связанную с объявлением класса. Я все еще работаю над всем решением, и как только у меня есть что-то, что работает правильно, я отправлю окончательную версию здесь. – DarthKipsu

Смежные вопросы