Size: a a a

Angular - русскоговорящее сообщество

2019 October 30

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
ребята, есть вот такой ng-темплейт:

<popover [config]="popoverConfig" (onClose)="onMenuSelect($event)" #popover>
   <ng-template #contentTemplate let-close="close">
       <menu [items]="popoverItems" (onSelect)="close($event)"></menu>
   </ng-template>
</popover>


в темплейт передаётся контекст — let-close="close"

в PopoverComponent есть метод close()

в PopoverComponent есть ссылка на темплейт:

@ContentChild('contentTemplate', { static: true }) contentTemplate: TemplateRef<any>;


и я хочу этот темплейт передать куда-то:

let template = this.contentTemplate;

this.someService.doSomething(template);


и потом этот тепмлейт вставляю в другое место.

так вот проблема в том, что контекст не передаётся

тобишь, this.contentTemplate это ссылка на темплейт, но почему-то без контекста.

Как контекст передать?
источник

NV

Nik Vas in Angular - русскоговорящее сообщество
в ИЕ вкладки объединяются магически, когда открываешь новую вкладку переходом из старой (например через "Открыть в новой вкладке"), а не по "Новая вкладка" - они объединяются и получают схожий цвет. Там со стораджем аккуратным быть надо.
источник

IF

Igor Filippov in Angular - русскоговорящее сообщество
Andrew M
Это именно копия состояния sessionStorage и такой баг возникает когда открываешь страницу правой кнопкой мыши, я победил это с помощью window.name, очищаю sessionStorage если window.name не совпадает с windowName сохраненном в sessionStorage
А, сорри. Ты был прав. Если ИМЕННО правой кнопкой, то да как ты и говорил
источник

AM

Andrew M in Angular - русскоговорящее сообщество
Igor Filippov
Я проверил, у меня в ИЕ не копируется сешн сторедж ие11
Вот вот ))
источник

AS

Anatoliy Salamatin in Angular - русскоговорящее сообщество
Всем привет. Подскажите пожалуйста. Есть поле для ввода текста. Обычный input. Как мне его сделать formControl? Обязательно ли использовать обертку для формы или группы?
источник

NV

Nik Vas in Angular - русскоговорящее сообщество
Andrew M
Это именно копия состояния sessionStorage и такой баг возникает когда открываешь страницу правой кнопкой мыши, я победил это с помощью window.name, очищаю sessionStorage если window.name не совпадает с windowName сохраненном в sessionStorage
победить можно отключив эту настройку в IE. Мы это победили проставлением флага, на перезагрузке страницы. т.е. мы всегда чистим сторадж при открытии если флага нет, или загружаем если он есть. Это не баг, это фича IE
источник

VB

Vlad Borsh in Angular - русскоговорящее сообщество
Anatoliy Salamatin
Всем привет. Подскажите пожалуйста. Есть поле для ввода текста. Обычный input. Как мне его сделать formControl? Обязательно ли использовать обертку для формы или группы?
Нет, просто повесь на инпут форм контрол
источник

AS

Anatoliy Salamatin in Angular - русскоговорящее сообщество
Vlad Borsh
Нет, просто повесь на инпут форм контрол
а как понять, что именно его отслеживать надо?
Вот так повесил сейчас <input type="text" formControlName="search">
источник

AM

Andrew M in Angular - русскоговорящее сообщество
Nik Vas
победить можно отключив эту настройку в IE. Мы это победили проставлением флага, на перезагрузке страницы. т.е. мы всегда чистим сторадж при открытии если флага нет, или загружаем если он есть. Это не баг, это фича IE
Да баг всегда можно назвать фичей 🤣
источник

NV

Nik Vas in Angular - русскоговорящее сообщество
он объединяет вкладки и их стораджи, если одну из другой открывать, и подкрашивает, это их лютая киллер фича
источник

VB

Vlad Borsh in Angular - русскоговорящее сообщество
Anatoliy Salamatin
а как понять, что именно его отслеживать надо?
Вот так повесил сейчас <input type="text" formControlName="search">
Просто [formControl]
источник

AS

Anatoliy Salamatin in Angular - русскоговорящее сообщество
Vlad Borsh
Просто [formControl]
спасибо!
источник

AM

Andrew M in Angular - русскоговорящее сообщество
Nik Vas
он объединяет вкладки и их стораджи, если одну из другой открывать, и подкрашивает, это их лютая киллер фича
Только вот эта их фича со стандартом не совпадает. 😒😡

"Открытие той же страницы в новом окне браузера или новой вкладке приводит к созданию новой сессии страницы, что отличается от поведения session cookies."
источник

IP

Ilya Platonov in Angular - русскоговорящее сообщество
Dmitry Teplov
const usersFromForm$ = this.form.valueChanges.pipe(
     startWith(null),
     map(item => item && typeof item === 'object' ? item.fullName : item),
     switchMap(name => name ? this.filter(name) : this.options.asObservable())

const buttonClick$ = new Subject();

const filteredUsers$ = merge(
 buttonClick$.pipe(mapTo(null)),
 usersFromForm$,
);
спасибо
источник

NV

Nik Vas in Angular - русскоговорящее сообщество
Andrew M
Только вот эта их фича со стандартом не совпадает. 😒😡

"Открытие той же страницы в новом окне браузера или новой вкладке приводит к созданию новой сессии страницы, что отличается от поведения session cookies."
ага, я же говорю что это ИХ киллер фича) IE любит инновации/. Можно выключить в Свойства браузера -> Общее -> Вкладки -> Снять галочку с "Включить группы вкладок". При этом потребуется перезагрузка пека чтобы поменялось все, IE такой IE.
источник

Вキ

Вертихвост キバ in Angular - русскоговорящее сообщество
Артур Мудрик
ребята, есть вот такой ng-темплейт:

<popover [config]="popoverConfig" (onClose)="onMenuSelect($event)" #popover>
   <ng-template #contentTemplate let-close="close">
       <menu [items]="popoverItems" (onSelect)="close($event)"></menu>
   </ng-template>
</popover>


в темплейт передаётся контекст — let-close="close"

в PopoverComponent есть метод close()

в PopoverComponent есть ссылка на темплейт:

@ContentChild('contentTemplate', { static: true }) contentTemplate: TemplateRef<any>;


и я хочу этот темплейт передать куда-то:

let template = this.contentTemplate;

this.someService.doSomething(template);


и потом этот тепмлейт вставляю в другое место.

так вот проблема в том, что контекст не передаётся

тобишь, this.contentTemplate это ссылка на темплейт, но почему-то без контекста.

Как контекст передать?
А как именно создается view?
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Вертихвост キバ
А как именно создается view?
через ViewContainerRef.createEmbeddedView(popover.template, popover.templateContext)
источник

Вキ

Вертихвост キバ in Angular - русскоговорящее сообщество
Артур Мудрик
через ViewContainerRef.createEmbeddedView(popover.template, popover.templateContext)
А в templateContext что находится?
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
тобишь, я контекст передаю, он работает, но я думал, что может быть сам темплейт может запомнить свой контекст и мне не нужно будет ручками это делать
источник

🧤K

🧤 Andrei Kapytau in Angular - русскоговорящее сообщество
Dmitry Teplov
ох, помню времена, когда аот ещё толком не работал, тащили в браузер компайлер..
А что плохого в проде без аот?)
источник