
Иван
24.01.2017
04:53:33

Vladimir
24.01.2017
06:12:09
@Ai_boy я правильно понимаю, что Subect<T> работает по принципу обсерваблов?

Алексей
24.01.2017
06:15:11

Vladimir
24.01.2017
06:15:32
Ну next генерит события

Google

Vladimir
24.01.2017
06:20:41
мне интересен принцип, как шаблон понимает, при ChangeDetectionStrategy.OnPush, когда ему нужно отрендерить заного
точнее, как ангуляр понимает

Таир
24.01.2017
06:22:33
тупо бежит по всем биндингам вниз с корня
сравнивает новое со старым по ссылке
и если ссылка не совпадает, метит поддерево на перерисовку
т.е. не совсем
бежит вглубь дерева и метит и перерисовку в тех узлах, что изменились
углубляется только по изменившимся узлам

Vladimir
24.01.2017
06:25:19
ну я примерно так и представлял. Т.е. OnPush дает некую оптимизацию

Alexander
24.01.2017
06:25:23
у компонента есть инпуты, если эти инпуты имеют новые референсы - дерево надо перерисовывать
дерево - это компонент и его детишки

Таир
24.01.2017
06:25:50
выйгрыш в том, что подразумевается, что если ссылка в родительском объекте совпала, то у дочерних тоже должна совпасть
но тут вы сами уже должны данные так организовать

Google

Gleb
24.01.2017
06:26:15
Привет как выглядеть должен MockStore? от NGRX стора.
Мой вариант просто сервис с select методом и там
switch
case type of ...
case type of ...
и там просто в зависимости от передаваемой подписки вернуть что то

Alexander
24.01.2017
06:26:31
в случае, если у тебя компонент сам внутри меняет свое состояние, требуется вызывать ChangeDetectionRef.markForCheck(). кстати чем это отличается от detectChanges и когда, что лучше использовать?

Vladimir
24.01.2017
06:27:00
Кстати, gcc дает уменьшение вендора с 465кб до 367, а мэйн с 200кб до 48. В gzip мэйн всего 8кб

Таир
24.01.2017
06:27:28

Vladimir
24.01.2017
06:27:52
gcc - google closure compiler. А то вдруг :D

Таир
24.01.2017
06:27:54

Vladimir
24.01.2017
06:29:19
внимание, вопрос. TreeShaking вообще при прод билде работает или нет?
есть статья, в которой используют ngc, rollup, uglify

Vadim
24.01.2017
06:29:35
Да, если настроить

Таир
24.01.2017
06:29:56

Алексей
24.01.2017
06:30:07
OnPush - выключает проверку внутренности объектов передоваемых в компонент и тупо сравнивает по ссылке. Если ссылка на объект изменилась - ищет изменения дальше по дереву. Из за этого onPush хорошо работает с imutable структурами данных

Таир
24.01.2017
06:30:30

Vadim
24.01.2017
06:30:36

Vladimir
24.01.2017
06:31:06

Alexander
24.01.2017
06:31:23
вчера второй вебпак натравил на проект и он уже работает с es2015 модулями, которые tree-shackable. судя по всему этот tree shaking происходит внутри UglifyJsPlugin, который как раз обычно в продакшене и запускается

Vadim
24.01.2017
06:32:13
Переход с webpack 1 на webpack 2 был для меня удивительно лёгким.
Менять пришлось лишь пару мелочей.

Vladimir
24.01.2017
06:33:09
https://github.com/angular/angular-cli/issues/2901

Vadim
24.01.2017
06:34:02
Так это ng-cli

Google

Vadim
24.01.2017
06:34:25
Руками ничто не мешает настроить, если это кастомный проект

Vyacheslav
24.01.2017
06:38:22
Как определить выделять ли какой-то элемент страницы в отдельный компонент?

Alexander
24.01.2017
06:40:45
по идее, как сами внутри команды решите
но судя по демо-проектам народ ориентируется на Single Responsibility Principle
т.е. как только компонент начинает выполнять чуть больше, чем одну UI задачу, он становится кандидатом на дробление. я пока так это понимаю. что смущает при таком подходе - получается довольно много файликов, в именовании которых можно даже начать путаться :)

Vyacheslav
24.01.2017
06:43:23
Спасибо )

Алексей
24.01.2017
06:51:59

Vladimir
24.01.2017
06:54:14
а какие еще есть варианты?

Igor
24.01.2017
07:09:56
c ngrx/store onPush прекрасно будет работать

Vladimir
24.01.2017
07:11:44

Igor
24.01.2017
07:12:50
с реактивными формами норм занятие, достаточно удобно использовать

Vladimir
24.01.2017
07:14:02
Ну так зачем мне всю форму в сторе хранить?:)

Igor
24.01.2017
07:23:34
я не храню форму в сторе, у меня алгортим такой:
в onInit билд формы, и подписка на значение из стора, подписка вызывает setValue у формы и выставляет всё что нужно в ней
при сабмите идет диспатч экшена, который обнавляет данные модели в сторе, попутно через эффект сохраня на сервер
т.е. в компоненте две точки одна мапит данные из модели на форму, вторая точка мапит данные из формы в модель
но у меня сложная модель, там больше 10 форм на разных вкладках, каждая форма частично обновляет модель
т.е. стркутура формы !== модели, поэтому стейт формы не хранится в сторе, хранится стейт модели, которая юзается много где

Vladimir
24.01.2017
07:25:36
Она просто сама по себе больше нигде не используется (модель)
Мы только начинаем перекатываться на ангуляр
И на данный момент совать ngrx/store нет смысла

Igor
24.01.2017
07:30:45
да я тоже так думал, плюс к этому можно добавить что ngrx/store заставляет писать много кода перед тем как всё начнет хоть как то работать. Но зато потом даёт ускорение, когда каркас есть, намного легче добавлять новые экшены и сущности в стор

Google

Vladimir
24.01.2017
07:31:22
Не на этой итерации:)

Igor
24.01.2017
07:33:58
в любом случае даже без стора, при сабмите форма передает всю свои данные одним объектом, которым можно заменить модель, получится что ссылка изменится, и всем компонентам предется перерендерится

Таир
24.01.2017
07:37:43
иначе, можно довыделяться :)

Алишер
24.01.2017
07:38:17
в каком смысле

Vladimir
24.01.2017
07:38:58
Разнесется код так, что потом не понять будет

Таир
24.01.2017
07:39:11
ну плодится такое большое кол-во компонент, что потом забудешь, что за что отвечает

Vladimir
24.01.2017
07:39:27
Документацию писать?

Таир
24.01.2017
07:39:37
и в какой-то момент могут появиться компоненты, которые друг-друга дублируют

Vyacheslav
24.01.2017
07:39:59

Таир
24.01.2017
07:40:33
но SRP никто не отменял

Denis
24.01.2017
07:41:01
Всем привет

Vadim
24.01.2017
07:41:33
Уж лучше так, чем огромные компоненты
Вот у меня сейчас, например, есть форма, состоящая из 4 шагов с немалым количеством логики. Логически на разные компоненты это не разобьёшь, но сам компонент в итоге получается очень объёмный.
Сделай я подобное там, где это можно разбить, я бы сам застрелился поддерживать этот код уже через пару месяцев.

Таир
24.01.2017
07:43:37
вообще, я думаю, дробить нужно только при рефакторинге, а не сразу проектировать компонентами на каждый чих

Vladimir
24.01.2017
07:44:50
Разбейте форму на саб формы

Lends
24.01.2017
07:44:54
а как же "react way" и наследование кнопок?

Vladimir
24.01.2017
07:44:56
И используйте formGroup

Иван
24.01.2017
07:46:02

Vadim
24.01.2017
07:46:08

Google

Vadim
24.01.2017
07:52:03

Vladimir
24.01.2017
08:10:28
Можно как-то из продбилда убрать хэши?

Vadim
24.01.2017
08:12:43
А зачем?
Это сломает принцип протухания кеша при деплое нового билда.

Vladimir
24.01.2017
08:15:17
В общем-то логично, да только за кеш отвечает у меня бэк
Плюс я хочу gcc поверх накидывать

Denis
24.01.2017
08:18:02
Парни
angular-cli чтоб сгенерировать роутинг
на существуещем модуле
типа вот так? ng g module my-module —routing
помогите понять ошибка вот такая - Unhandled Promise rejection: No ErrorHandler. Is platform module (BrowserModule) included? ; Zone: <root> ; Task: Promise.then ; Value:
я так понимаю что-то забыл включить в файл main?

Vyacheslav
24.01.2017
09:11:58
import { BrowserModule } from '@angular/platform-browser';
app.module

Denis
24.01.2017
09:14:14
app.module
Спасибо, теперь вот такое The module AppModule was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.
метода такого уже нет?

Vyacheslav
24.01.2017
09:16:04
import { NgModule } from '@angular/core';
есть?
Эта группа больше не существует