• Angular 2 как задать template динамически?

    Посмотрите вот этот ответ Как в Angular2 инициализировать router?
    Там немного устаревший код

    Обновленная версия

    1) Использование компилятора

    Создаем директиву, которая будет динамически подгружать компонент с желаемым шаблоном
    html-outler.ts
    @Directive({ selector: 'html-outlet' })
    export class HtmlOutlet {
      @Input() html: string;
      cmpRef: ComponentRef<any>;
    
      constructor(private vcRef: ViewContainerRef, private compiler: Compiler) { }
    
      ngOnChanges() {
        const html = this.html;
        if (!html) return;
        
        if(this.cmpRef) {
          this.cmpRef.destroy();
        }
        
        @Component({
          selector: 'dynamic-comp',
          template: html
        })
        class DynamicHtmlComponent  {};
    
         @NgModule({
          imports: [CommonModule],
          declarations: [DynamicHtmlComponent]
        })
        class DynamicHtmlModule {}
    
        this.compiler.compileModuleAndAllComponentsAsync(DynamicHtmlModule)
          .then(factory => {
            const moduleRef = factory.ngModuleFactory.create(this.vcRef.parentInjector);
            
            const compFactory = factory.componentFactories.find(x => x.componentType === DynamicHtmlComponent);
            const cmpRef = this.vcRef.createComponent(compFactory, 0, moduleRef.injector);
          });
      }
      
      ngOnDestroy() {
        if(this.cmpRef) {
          this.cmpRef.destroy();
        }    
      }
    }

    Затем используем это таким образом:

    <html-outlet [html]="html"></html-outlet>

    Вместо template может быть templateUrl Параметры @Input@Output можно накрутить потом если надо

    Пример как это работает

    2) Если у вас есть строго определенный набор компонентов, то можете рассмотреть другой вариант:

    ComponentFactoryResolver.resolveComponentFactory

    В этом случае эти компоненты нужно добавить:
    1. в entryComponents массив вашего модуля или компонента
    2. или через ANALYZE_FOR_ENTRY_COMPONENTS провайдер
    Ответ написан
    Комментировать
  • Не могу разобраться с иконками, поможете?

    @Wheelie
    Ответ написан
    Комментировать
  • Почему не работает package control в Sublime Text

    @nick1m
    Столкнулся с той же проблемой "There are no packages available for installation". Возможно кому пригодится.

    Boshnik Маленькая поправка не "В настройках брандмауэра", а в "свойства браузера", а то мне пришлось поискать :).

    Но, на данный момент эту проблему решили, сертификат обновили. Но не работало. Сначала оказалось, что лежал сайт (в конце ответа лежит решение позволяющее обойти и эту проблему), проверяем https://packagecontrol.io/channel_v3.json, но и после возобновления проблема не ушла.

    Добавляем в настройки плагинов для пользователя (Preferences > Package Settings > Package Control > Settings - User) каналы:
    "channels":
    [
    "https://packagecontrol.io/channel_v3.json",
    "https://web.archive.org/web/20160103232808/https://packagecontrol.io/channel_v3.json",
    "https://gist.githubusercontent.com/nick1m/660ed046a096dae0b0ab/raw/e6e9e23a0bb48b44537f61025fbc359f8d586eb4/channel_v3.json"
    ],

    Мою проблему это решило. Видимо channel_v3.json выдаёт сейчас не то, что должен. Решение временное, т.к. скорее всего в ближайшее время починят и в вебархиве данные могут устареть.

    UPD!!!: поправил код, у кого не работало - ссылка резалась тестером, сейчас в код обернул, спасибо Максим !

    UPD2: ещё раз исправил. Добавил свежую ссылку с вебархива от Максим , а так же скопировал на гист свежие данные от 04.01.2016 вторая ссылка, можно использовать по усмотрению. Не забываем о разделителях типа "запятая" :).

    PS: Кстати, ST удобно пользоваться гистом, я там и зарегался вчера только из-за любопытства :).
    Ответ написан
    14 комментариев
  • Как использовать поле ImageField в Django?

    baterson
    @baterson
    python/django
    В settings.py указан путь до статики?
    Обычно такой
    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

    И медиа настройки так же
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

    и в урлах добавить такую запись
    from django.conf.urls.static import static
    from django.conf import settings
    urlpatterns = [....
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    Может быть хотели взять все объекты? Step.objects.all() иначе не ясно, как вы выбираете конкретный объект
    Если берете их все, далее в шаблоне можно через цикл вывести фото
    {% for img in stepfieldst %}
    <img src="{{ img.main_photo.url }}" >
    {% endfor %}

    Если выбираете по конкретному объекту, то код будет такой же, только не в цикле
    Ответ написан
    2 комментария