
Алексей
27.11.2016
14:15:24

Dmitry
27.11.2016
17:02:56
а где можно почитать про формы в Angular 2, только свежую инфу?
доки прочитал, но не уверен, что template driven это единсвенный вариант

Alexander
27.11.2016
17:53:13
загугли model driven forms angular 2

Google

Alexander
27.11.2016
17:53:39
сайт называется что-то типа thoughtgram - довольно хорошо все расписано

Алексей
27.11.2016
18:03:31
https://youtu.be/xYv9lsrV0s4

Dmitry
27.11.2016
18:09:16
спасибо большое

marat
27.11.2016
18:14:09

Алексей
27.11.2016
18:21:25

marat
27.11.2016
18:24:42

Dmitry
27.11.2016
18:36:53
Ребят, а как быть с селектами в FormBuilder?
по formControlName не биндится
биндить ngModel?
а стоп, мой косяк ?

Алексей
27.11.2016
18:39:59
а стоп, мой косяк ?
Да все должно работать. + Не забывайте что формы от модели называются Reactive Forms - поэтому там вот такие чудеса возможны
// editProfileForm uses autosave
this.editProfileFormGroup.valueChanges
.debounceTime(1000)
.filter(() => this.editProfileFormGroup.valid)
.distinctUntilChanged()
.switchMap((values) => this.http.post(Constants.API_PREFIX + '/profile', values).retryWhen(attempts =>
// incremental backoff
attempts
.zip(Observable.range(1, 3), (_, i) => i)
.flatMap((i: number) => {
return i < 3 ?
Observable.timer(i * 1000) :
Observable.throw('Retry was not helpfull');
})
))
.subscribe(null, this.onAutoSaveProfileFail);

Dmitry
27.11.2016
18:41:05
ОМГ

Google

Dmitry
27.11.2016
18:41:20
мощно
а что делать с сабмитом?
вешать просто на форму?

Алексей
27.11.2016
18:43:14
Это Debounce + фильтрация валидных данных + отмена действий если по факту ничего не поменялось (к примеру удалил символ и тутже такойже добавил) + сразу делается запрос (автосохранение) и делается 3 retry с Incremental backoff
либо как выше показал - просто на изменения подписываешься и делаешь автосохранение

Dmitry
27.11.2016
18:44:47
окай, спасибо спробую
Вопрос, а как быть с массивом?
например чекбоксы или кастомный мультиселек?

marat
27.11.2016
19:00:09

Dmitry
27.11.2016
19:00:49
как в formcontrol заигачить массив?
просто кастомной функцией?

Alexander
27.11.2016
19:01:22
ну ты можешь написать свой форм контрол
value которого будет массив с выбранными пунктами

marat
27.11.2016
19:01:51
там был контрол для этого
что-то вроде ControlArray
ща поищу

Alexander
27.11.2016
19:02:07
formArray

Dmitry
27.11.2016
19:02:22
чета сложна

Алексей
27.11.2016
19:02:34
https://www.youtube.com/watch?v=xYv9lsrV0s4&feature=youtu.be
Посмотрите видео

Dmitry
27.11.2016
19:02:50
смотрю

Алексей
27.11.2016
19:03:20

Alexander
27.11.2016
19:03:40
проще будет, если начнешь думать об этом в терминах модели данных. массив, строка, число - это способы представления

Google

Alexander
27.11.2016
19:04:10
но по сути своей у тебя есть свойство А и есть контрол А', который дает UI для его редактирования

marat
27.11.2016
19:04:15
кстати да, если массив это значение поля, то это просто formControl
а если массив контролов, тогда formArray

Alexander
27.11.2016
19:05:44
хотел с работы вопрос задать, но кто-нибудь писал структурные компоненты?
задача: сделать компонент, который будет контейнером для редактора сущности и ее отображения
типа <switcher><view-entity *viewMode><edit-entity *editMode></switcher>

Dmitry
27.11.2016
19:08:44
просто не догоняю саму модель, вот есть кастомный инпут, я объявил в formbuilder property: [[], Validators.required]

Alexander
27.11.2016
19:09:36
view-entity и edit-entity могут быть разными. я это сделал, но по каким-то причинам если писать <div *viewMode><p>Hello!</p> {{ vehicle.model } </div> у меня выводилось Hello, но мой баиндинг не выводился. хотя информация точно была

Алексей
27.11.2016
19:10:19

Alexander
27.11.2016
19:10:53
да, завтра уже на работе код будет и набросаю. скину сюда

Dmitry
27.11.2016
19:13:23
втыкаю видос, может я просто усложняю все

Алексей
27.11.2016
19:13:53

Геннадий
27.11.2016
19:14:04
Можно узнать, я ли этот Геннадий?
Геннадий has been warned (1/3)
Контекста вообще нет

Алексей
27.11.2016
19:14:49
Не знаю.. я всем подряд раздавал - могли попасть под горячую руку.

Dmitry
27.11.2016
19:15:09

Google

Алексей
27.11.2016
19:15:34

Dmitry
27.11.2016
19:16:48

Alexander
27.11.2016
19:17:45
ага
http://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html - Алексей уже ссылку скинул

Dmitry
27.11.2016
19:17:55
смотрю сейчас ее

Alexander
27.11.2016
19:18:00
вот тут описано как для обычного счетчика сделать компонент
но в твоем случае контрол будет возвращать не число, а массив
контрол = компонент

Dmitry
27.11.2016
19:19:35
йеп, с отдельным компонентном понятно, но я понял, что есть же чекбоксы, которые стандартные контролы, значит могло быть и стандарнтое решение

Alexander
27.11.2016
19:20:32
не пробовал, но можно сделать formArray из чекбоксов и потом собрать выбранные по идее
но по идеологии ангуляра, как я ее понимаю, правильней было объединить это в отдельный компонент, если эти значения ходят вместе группой

marat
27.11.2016
19:22:06
для мултиселекта

Dmitry
27.11.2016
19:24:42
спасибо за помощь так и сделаю

Dmitry
28.11.2016
00:05:32
https://www.youtube.com/watch?v=a6v4z1kSFu4
советую начинающим кто еще не смотрел
+ дешку про observable чел объясняет

Alexander
28.11.2016
05:47:51
https://plnkr.co/edit/MSR1zGU0zhYBEj6woQSU?p=preview

Алексей
28.11.2016
05:49:19

Alexander
28.11.2016
05:49:20
вот правильная ссылка

Google

Alexander
28.11.2016
05:49:50
ага, впервые планкером пользуюсь. Алексей, можно и на ты, если так будет комфортней
да вот не хочется пока считать, что проблема в коде :), думаю может версия ангуляра виновата. хотя конечно вероятность этого гораздо ниже

Алексей
28.11.2016
05:52:33

Alexander
28.11.2016
05:53:32
сейчас так и поступлю, спасибо. есть подозрение, что намудрил с ChangeDetectionStrategy (в планкере стратегия дефолтная)

Алексей
28.11.2016
05:56:29

Alexander
28.11.2016
06:21:36
так и есть. в методе ngOnInit я делал выставление некоторых значений и все заработало после того, как сделал в конце метода this.changeDetector.detectChanges()
правда до конца непонятно почему так. есть рекомендации для хорошего видео/статьи по changeDetector-у?
а то вижу у него много методов типа detectChanged, markForCheck и т.п. и довольно стремно не понимать когда и зачем их использовать

Eight
28.11.2016
08:55:40
Всем привет! Прописал такой конфиг в package.json "scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tsc": "tsc",
"tsc:w": "tsc -w",
"start": "concurrent \"npm run tsc:w\" \"lite-server -c bs-config.json\" \"gulp watch\" "
}
Но lite-server все-равно запускается без учета настроек когда пишу npm start, почему?
В bs-config.json указана только папка {
"server": {"baseDir": "./dist"}
}

Стас
28.11.2016
08:59:48
Ребят, не подскажите прогу под os x для скринов с прокруткой?

Николай
28.11.2016
09:00:39
а CMD+Shift+4 ?
ну и CMD+Shift+3

Стас
28.11.2016
09:01:28
они бещ прокрутки

Николай
28.11.2016
09:01:48
а что значит прокрутка? (сорьки)

Стас
28.11.2016
09:02:21
скролбар на странице
нужна автопрокрутка и скриншотинг содержимого
Эта группа больше не существует