
Alexander
18.12.2016
13:04:51
очень удобный, и его прелесть в том, что он может быть общим для бэка/фронта/документации (Swagger)
особенно круто, что схему можно передать с бэка прям в API
и она всегда будет актуальной, т.к. ее правила применяются при проверка на бэке и фронте
я только хотел узнать об опыте использовании JSON схема и Ng2 Forms

Google

Alexander
18.12.2016
13:06:47
если он был у кого-то уже
может есть какие-то изящные идеи
или кто-то наталкивался на обсуждение о принятии стандарта связанного с JSON схема в будующих версиях Angular2 (мало-ли, стандарт молодой и динамично развивающийся) и т.п.
может у @Ai_boy есть что сказать? всегда было что-нибудь интересное ?

Alexey
18.12.2016
13:13:21
у меня есть что сказать
мы используем в своих проектах json schema и вполне успешно

Алексей
18.12.2016
13:13:57

Alexey
18.12.2016
13:15:49
сторонних библиотек я не использовал, написал свой компонент form-field, который из json schema динамически строит форму, в template-driven варианте ясное дело, без FormBuilder'ов
довольно удобно получилось

Алексей
18.12.2016
13:17:34

Alexander
18.12.2016
13:18:24
А если как-то сочетать с FormBuilder?

Google

Alexander
18.12.2016
13:20:43
В том то и тонкость, мне кажется, что JsonSchema и FormBuilder во многом выполняют пересекающиеся задачи, но при этом и то и то хорошо себя рекомендуют
В идеале, конечно, хотелось бы некоторый вариант FormBuilder'a со всем его удобством в построении форм, для которого можно было бы указать JSON-Schema для валидации

Алексей
18.12.2016
13:22:29

Alexander
18.12.2016
13:22:54

Alexey
18.12.2016
13:25:36
не могу ничего посоветовать т.к не вижу ничего удобного в самом использовании FormBuilder'а, мне удобней директивами [(ngModel)] описывать форму
в случае с json schema это выглядит так
<div *ngFor="let key of tagType.schema.properties | keys" class="margin-bottom-10">
<form-field class="gray font-size-12"
[name]="key"
[schema]="tagType.schema.properties[key]"
[model]="model.attrs"
[form]="tagForm"
[required]="tagType.schema.required"
[hint]="'tags.hints.' + key | translate"
>
</form-field>
</div>
внутри form-filed
[(ngModel)]="model[name]"

Alexander
18.12.2016
13:29:00
на FormBuilder удобен для динамических форм

Alexey
18.12.2016
13:29:20
а это чем не динамическая форма?

Alexander
18.12.2016
13:29:29
да, я вижу
в цикле дело идет...

Alexey
18.12.2016
13:30:13
tagType.schema это JSON Schema

Alexander
18.12.2016
13:30:25
ага, я понял

Alexey
18.12.2016
13:30:26
стандартная

Alexander
18.12.2016
13:30:31
вкуриваю

Alexey
18.12.2016
13:31:16
да

Alexander
18.12.2016
13:31:28
хорошо
а как быть со сложными схемами, состоящих из множества anyOf, allOf, разными вариантами для required и т.п.?

Alexey
18.12.2016
13:32:25
внутри form-field зашита вся логика по отображению контролов в зависимости от type поля рисуем input/textarea/select/codeEditor и т.д

Google

Alexey
18.12.2016
13:33:48
про required поясни плз , не понял вопрос

Alexander
18.12.2016
13:34:25
за счет anyOf, oneOf

Alexey
18.12.2016
13:34:38
например?

Alexander
18.12.2016
13:36:16
там некоторые поля некорректно описаны
но не суть
тут несколько вариантов required
потому что для регистрации нужно чтобы человек указал или email, или телефон
https://spacetelescope.github.io/understanding-json-schema/reference/combining.html#combining

Alexey
18.12.2016
13:38:25
ага, понял

Alexander
18.12.2016
13:38:59
т.е., если не учитывать этой особенности, то да, самое логичное — вывести то что в схеме

Alexey
18.12.2016
13:42:45
мы такое пока не поддерживали, но если понадобится думаю можно будет тоже обойтись директивами и компонентами, объект NgForm у нас есть, мы его сейчас передаем в [form] в каждый form-field, думаю пришлось бы написать еще wrapper компонент <json-schema [form]="myForm">
выглядело бы так:
<json-schema [form]="tagForm" [required]="tagType.schema.required">
<div *ngFor="let key of tagType.schema.properties | keys" class="margin-bottom-10">
<form-field class="gray font-size-12"
[name]="key"
[schema]="tagType.schema.properties[key]"
[model]="model.attrs"
[form]="tagForm"
[required]="tagType.schema.required"
[hint]="'tags.hints.' + key | translate"
>
</form-field>
</div>
</json-schema>
внутри json-schema можно реализовать кастомную валидацию anyOf, oneOf и т.д. Будет доступ ко всем дочерним form-field и ngModel, будет доступ к объекту NgForm

Vlad
18.12.2016
18:02:40

Game
18.12.2016
18:03:51
Спасибо, да, я уже решил выучить его.

Vlad
18.12.2016
18:04:45

Game
18.12.2016
18:06:25
Год назад садился учить, в день получалось запоминать по 300 слов. )

Vlad
18.12.2016
18:06:45

Google

Vlad
18.12.2016
18:07:32

Alexander
18.12.2016
18:07:33

Тимур
18.12.2016
18:08:12

Vlad
18.12.2016
18:08:26

Game
18.12.2016
18:08:35
Да, не. У меня сестра учитель английского.

Alexander
18.12.2016
18:08:47
Для PhalconPHP в свое время перевели половину доков (это 3-4 года назад еще было), и с тех пор дальше не двигалось. Видать все поняли что нахрен никому не нужно.

Game
18.12.2016
18:09:59
Я думаю просто финансирование переводов кончилось.

Vlad
18.12.2016
18:10:09

Alexander
18.12.2016
18:10:38
Это опен соурс

Vlad
18.12.2016
18:10:50

Game
18.12.2016
18:12:11
Я за две недели запомнил почти 2 т. И понимал слова в песнях ac/dc. Потом я бросил.

Vlad
18.12.2016
18:12:31
Для себя я понял: когда смогу большой куш в оригинале и без Сабов глянуть, а трилогию Бартимеуса прочитать без словаря - я крут.

Alexander
18.12.2016
18:13:06
Я думаю хватит на тему изучения языков ? а то потом полезную инфу не найдешь

Korolll
19.12.2016
06:21:10
ребят, у меня в проекте есть рекурсивная функция (притом максимальное число рекурсий 2!). Angular ругается
Maximum call stack size exceeded
, как пофиксить

Igor
19.12.2016
06:24:08
это не ангулар, а js ругается, у тебя возможно два вызва твоей функции, но твоя функция видать поражадает длинный стэк вызовов
посмотри по стэку, там же видно в консоли

Korolll
19.12.2016
06:43:20

Igor
19.12.2016
06:44:29
?

Google

Dmitry
19.12.2016
07:40:34
кто знает, как сейчас обстоят дела с индексацией поисковиками ajax страниц? или нужно все же делать статику отдельно для них

Fayozjon [CybernatiC]
19.12.2016
08:05:07
Придется для яндекса

Lends
19.12.2016
08:05:59
и гугл советует SSR

Fayozjon [CybernatiC]
19.12.2016
08:07:18
Вообще аякс не для сео
Жопно
Вот если это где то бэк сервис или же приложение не требующее индексации то норм

Lends
19.12.2016
08:18:08
в рабочих документах группы по Angular 2 очень хорошо описано всё про SEO

Anton
19.12.2016
09:41:20
может кто подсказать, что я делаю не так?
имеется компонент, который принимает объект, и одно из полей объекта впихивает в свой чайлд-компонент, присваивание проходит нормально, но на странице через augury я вижу, что у чайлда этот атрибут пустой... вот код
@Component({
selector: 'dt-filter-multiselect',
template: '<p-multiSelect [options]="options"></p-multiSelect>'
})
export class DTFilterMultiselect extends DTFilter {
@Input() column: Column;
@Input() filters: any;
public options: SelectItem[]; //= [{'label':'text','value':'1'},{'label':'text','value':'2'},{'label':'PLock','value':'3'}];
ngOnInit(){
if(this.column.filterOptions) {
this.options = this.column.filterOptions;
}
}
}
причем если убрать ngOnInit и раскомментить присваивание options, то все ок, this.column.filterOptions содержит нужные данные

Alexey
19.12.2016
10:15:39
Эксепшны в консоль валятся какие-нибудь ?
Покажи код комонента p-multiSelect

Anton
19.12.2016
10:19:30
эксепшны валятся только когда идет обращение внутри p-multiSelect к options (так-как undefined), p-multiSelect сторонний, и работает вне dt-filter-multiselect
http://www.primefaces.org/primeng/#/multiselect вот отсюда я его взял

Alexey
19.12.2016
10:21:28
ну так после эксепшна у тебя ничего и не будет дальше работать
надо его пофиксить
сделай public options: SelectItem[] = [];
и потом в ngOnInit() все как ты сейчас делаешь
эксепшн должен исчезнуть и соответственно далее твоя логика заработает

Anton
19.12.2016
10:24:25
эксепшн после инита валится
он валится когда я открываю дропдаун (он пустой), и начинаю вводить что-то в инпат в нем
но по факту он должен быть с элементами
да, если воткнуть пустой массив - эксепшна уже нет, но дропдаун по прежнему пустой
Эта группа больше не существует