Alexey
03.02.2017
11:17:04
мы не можем ничего форкджоинить и вообще комбинировать как то
их вызов
это делается под капотом роутера
и там судя по исходникам resolve: {} собирается в массив и выполнятеся через Observable.concatAll()
Google
Alexey
03.02.2017
11:18:06
concatAll выполняет все последовательно
если observable холодные
Олег
03.02.2017
11:20:06
ты в имплементации resolve не можеш сделать forkjoin?
ну или я не понимаю проблемы)
Igor
03.02.2017
11:20:38
так если у него три разных ресолвера, это ему придется писать четвертый с форкджойном, а он не хочет
да и тупо это
Alexey
03.02.2017
11:20:49
именно
все верно
Igor
03.02.2017
11:20:59
должно паралельно быть как с промисами
мне кстати вообще ресолверы не нравится. Пока они ресолвятся юзер видит текущий компонент, а урл уже поменялся. И создается ощущение что интефейс тупит. Мне больше понравилось в onInit данные запрашивать, а темплейт в ngIF обарачивать, тогда отклик мгновенный, а в компоненте можно лоадером покрутить
Alexey
03.02.2017
11:26:29
думал об этом варианте
но мне нужно резолвер после canActive запустить
там еще guard стоит перед ними
Google
Макс
03.02.2017
11:43:07
Блин, не понимаю. Объясните, пожалуйста, русским по белому... Angular 2 вообще всегда работает с серверной частью?
Lends
03.02.2017
11:44:02
что, простите?
Макс
03.02.2017
11:44:16
Нельзя его тупо как Angular 1 подключить в виде одной библиотечки и сделать интерфейс себе?
Lends
03.02.2017
11:44:33
конечно можно
Eugene
03.02.2017
11:44:47
А причем тут серверная часть?:)
Lends
03.02.2017
11:45:12
небось смущает ng serve :)
Макс
03.02.2017
11:46:30
А чего он в примерах везде с компиляцией идет всякой?
Открываю https://angular.io, а там говорят - посмотрите классный QuickStart seed. Запускаю, а там встроенный сервак.... шта?! Нельзя было просто index.html сделать?
Lends
03.02.2017
11:46:53
это ж для простоты и удобства
посмотри примеры с планкера
Макс
03.02.2017
11:48:01
Может насоветуете какой-то совсем нуб-гайд классный?
Dmitry
03.02.2017
11:54:14
Всем привет, а в ng2 есть что-то вроде props.children, как в реакте?
хочу обернуть все в компонент, который будет рендерить вообще все что ему передадут, и просто добавлять свои теги
Vladimir
03.02.2017
11:57:49
ng-content
Dmitry
03.02.2017
11:59:04
спасибо, ушел гуглить ?
Олег
03.02.2017
12:00:13
Таир
03.02.2017
12:03:41
Макс
03.02.2017
12:03:43
спасибо, я там уже :)
Константин
03.02.2017
12:08:11
Gordey
03.02.2017
12:10:18
return {
passwordRepeatCompare: {
valid: control.value === this.form.get('passwordNew').value
}
}
sanqa
03.02.2017
12:10:49
а обязательно использовать FromGroup ?
Google
Gleb
03.02.2017
12:11:04
import {FormGroup} from '@angular/forms';
export class ConfirmPasswordValidator {
static matchingPasswords(passwordKey: string, confirmPasswordKey: string) {
return (group: FormGroup): {[key: string]: any} => {
let password = group.controls[passwordKey];
let confirmPassword = group.controls[confirmPasswordKey];
if (password.value !== confirmPassword.value) {
return {
mismatchedPasswords: true
};
}
}
}
}
это не на подсократить правда
Олег
03.02.2017
12:11:27
инлайн валидаторы это сильно
Lends
03.02.2017
12:11:52
зачем let? там явно const
sanqa
03.02.2017
12:12:09
login(mail: string, pass: number) {
mail = mail.trim();
if (!mail || !pass) {
return;
}
this.dat = {
mail: mail,
pass: pass
};
this.aservice.login(this.dat)
.then(user => {
this.loading = false;
if (user) {
this.router.navigate(['/main']);
}
});
}
а этот способ на много хуже ?
Алексей
03.02.2017
12:12:24
Валидаторов в приложении бывает не так много.. вынесите из в отдельный файл или пакет и не мучайтесь
Gleb
03.02.2017
12:12:41
Конечно, плюс это исопльзовать удобно в extra валидаторах
Константин
03.02.2017
12:14:05
sanqa
03.02.2017
12:15:48
что значит реактивные формы
Vladimir
03.02.2017
12:16:16
Каждое поле - observable
Ну и observer
Subject, грубо говоря
Gleb
03.02.2017
12:17:15
В доках пишут оснонвой плюс таких форм в тестировнии, а как тестировать не показали
sanqa
03.02.2017
12:17:30
DD
Vitaliy
03.02.2017
12:23:39
???
Константин
03.02.2017
12:27:32
Лично мне нравится, что вся логика работы формы в коде, валидаторы и т.п. хлам.
А в представлении только разметка и верстка
Gleb
03.02.2017
12:28:56
А вот тестируем мы при таком подходе не хтмл? то есть можем прям инстансы филдов дергать из формы менять и expect ?
а не искать на странице хтмл инпут итд
Google
Alexey
03.02.2017
12:30:31
что будет гарантировать этот тест?
Gleb
03.02.2017
12:32:26
Ну это вопрос и предположение одновременно было =)
https://semaphoreci.com/community/tutorials/testing-components-in-angular-2-with-jasmine
Не так много статей просто по тестированию форм, вот если тут смотреть то ведь так и получается? или перепутал что то
https://github.com/gonzofish/semaphore-ng2-webpack
Вот гит из статьи
прихоится по статьям/блогам лазить , т.к в офф доке именно про тестирование форм, реактивных не реактивных не слова
там есть урыввками про инпуты, но те без валидации
Vladimir
03.02.2017
12:36:25
А зачем проверять инпуты?
Их нужно проверять, если они выставляются в зависимости от другого параметра
Alexey
03.02.2017
12:42:04
да надо не инпуты скорей проверять а форму целиком, я формы выношу в компоненты, например
<user-form [user]="newUser" (onSubmit)="submit($event)" (onCancel)="cancel($event)">
это глупый компонент, он отрисовывает форму, валидирует ввод и если форма валидно заполнена при сабмите прокинет JSON наверх
логично ее тестировать через TestHostComponent, просто рендерим ее в тесте, заполняем инпуты имитируя пользовательский ввод
проверяем валидный/невалидный ввод
1) когда не валидно заполнили и нажали submit то onSubmit евент не приходит
Gleb
03.02.2017
12:44:29
ну да, но заполнить можно форму реактивную без хтмл ведь
ну вот весь этот кейс без хтмл можно
типа как юнит
Alexey
03.02.2017
12:44:39
2) когда валидно заполнили и засабмитили то проверяем что onSubmit выполнился и что в нем пришло
Gleb
03.02.2017
12:44:42
если я сам правильно понял
Alexey
03.02.2017
12:46:00
да неважно что у тебя под капотом внутри user-form, template-driven или model-driven form
я бы тестировал все равно как пользователь
Google
Alexey
03.02.2017
12:46:10
отрендерил и прокликал
и это не e2e тест
это unit test
изолированно
в TestBed
как пользователю который заполняет в итоге форму так и разработчику который потом вставляет где-то <user-form> компонент им обоим без разницы какая реализия внутри
главное чтобы API формы работало
для юзера API это форма в браузере с инпутами, для разработчика API это @Input и @Output этого компонента
Алишер
03.02.2017
12:48:59
Подскажите, почему не применяются стили компонента, когда использую ng-content.
Пример:
style:
ul.red li{
background: red;
}
Компонент
<ul class="red">
<ng-content select=[links]></ng-content>
</ul>
Родитель:
<my-nav>
<li links *ngFor="let nav of navs">{{nav.title}}</li>
</my-nav>
Alexey
03.02.2017
12:50:09
посмотри на скомпилированный код css
Gleb
03.02.2017
12:50:14
Testing Considerations
We can write isolated unit tests of validation and control logic in Reactive Forms.
Isolated unit tests probe the component class directly, independent of its interactions with its template, the DOM, other dependencies, or Angular itself.
Such tests have minimal setup, are quick to write, and easy to maintain. They do not require the Angular TestBed or asynchronous testing practices.
That's not possible with Template-driven forms. The template-driven approach relies on Angular to produce the control model and to derive validation rules from the HTML validation attributes. You must use the Angular TestBed to create component test instances, write asynchronous tests, and interact with the DOM.
Я не берусь спорить если не уверен, но я как понял вот темплейт формы они говорят мол тестить надо как раз как хтмл, а эти можно просто инстансы тестить
Алишер
03.02.2017
12:51:18
Alexey
03.02.2017
12:52:23
если тестишь без дома то ты проверяешь логику формы
и только
это хорошо конечно
Gleb
03.02.2017
12:53:27
хыы
я понял
ну да наверное ))
Alexey
03.02.2017
12:54:13
но не дает гарантии того как у тебя в итоге эта форма отрендерится и будет взаимодействовать с конечным пользователем
Эта группа больше не существует