@angular2Эта группа больше не существует

Страница 162 из 179
Виталий
31.01.2017
06:26:58
Он мне даже варнинги от tslint теперь по 2 раза показывает(

Кто-нибудь встречался с тем, что хром выполняет все скрипты по 2 раза? В FF и IE один, а в хроме - 2 ?

Виталий
31.01.2017
06:54:42
Вообще куда бы я ни поставил брейк-поинт, он у меня 2 раза выполняется. Один раз как ts, другой из app.js

Google
Lends
31.01.2017
07:01:11
Как ts? Откуда у него ts?

Виталий
31.01.2017
07:03:27
В общем выключил настройку Enable JavaScript source maps, потом включил опять, и все стало работать нормально ??

Igor
31.01.2017
07:38:49
Как ts? Откуда у него ts?
если сорс мапы есть, то можно ставить брейкпоинты в ts

а если настроить воркспейс в хроме, то даже редактировать из хрома можно

Dmitry
31.01.2017
08:13:12
Всем привет, у меня почему-то ngrx-state-freeze ругается на подобный код



не могу понять, я же клонировал массив? и дальше уже с новым массивом работаю, ругается на код типа item.id = "id"

Igor
31.01.2017
08:16:03
может дело не в этом куске кода?

Dmitry
31.01.2017
08:16:37
имеенно в нем, index.js:19State mutation is prohibited inside of reducers.

может я что-то не вкурил? разве я не могу работать над объектами в reducer?

Alexander
31.01.2017
08:19:02
по идее reducer должен возвращать новое состояние, а не менять текущее

Dmitry
31.01.2017
08:19:54
дык он и возвращает, логика такая пришел pyload => сделал копию => добавил id для items => вернул новый стейт Object.assign...

я почему-то был уверен, что я могу добавлять менять что хочу пока это не тригерит мутаций стейта

Google
Виталий
31.01.2017
08:21:18
мой ProfileLayout только один раз отрабатывает конструктор
Подскажи, пожалуйста, почему теперь ActivatedRoute route.params пустой, когда я открываю роут с ':id' ?

Igor
31.01.2017
08:22:48
у тебя первый пустой роут срабатывает скорее всего

Dmitry
31.01.2017
08:23:00
похоже просто ошибка ngrx-freeze, если я все правильно понял, он смотрит на изменения вообще чего угодно, а не state

Igor
31.01.2017
08:23:18
children: [ {path: '', component: ConversationItemComponent}, { path: ':id', component: ConversationItemComponent, } ] первому pathMatch: full поставь

похоже просто ошибка ngrx-freeze, если я все правильно понял, он смотрит на изменения вообще чего угодно, а не state
я его тоже юзаю, и ошибки он кидает исключительно только когда ты меняешь что-то внутри объекта, не меняя ссылку

может у тебя просто в payload прилетает тоже самое?

Igor
31.01.2017
08:24:56
да, в стейте

Dmitry
31.01.2017
08:25:15
бли

Vladimir
31.01.2017
08:26:55
так, а как контекст биндится к темплейту?

ngOutletContext передает лишь частично

можно, конечно, функции .bind(this)

даже будет работать

Dmitry
31.01.2017
08:27:57


Dmitry
31.01.2017
08:28:18
да, в стейте
вот код, который точно не меняет объект стейт, но внутри которого происхожит мутация

Vladimir
31.01.2017
08:28:25
<template *ngIf="itemTemplate" [ngTemplateOutlet]="itemTemplate" [ngOutletContext]="{$implicit:item,hoveredValue:hoveredValue,selectedValue:value,select:select}"></template>

Dmitry
31.01.2017
08:30:35
может так тоже нельзя? просто мне показалось логичным изменять объект в reducer до того, как вернуть state

Igor
31.01.2017
08:31:02
Не помогло :(
дампни в консоль ActivatedRoute посмотри что-где, может ты не там ищешь

вот код, который точно не меняет объект стейт, но внутри которого происхожит мутация
почему ты думаешь что ошибка именно тут? покажи ошибку из консоли

Google
Dmitry
31.01.2017
08:40:09


ошибка

и самое тупое, что вот это валидный код



то есть если я сортирую массив, то все норм? а вот если внутри массива меняю свой-во, то нет?

Олег
31.01.2017
08:44:33
внутри массива обьекты, обекты имеют ссылочный тип

Igor
31.01.2017
08:45:00
я же выше писал у тебя в payload объекты которые уже были в стейте

то что ты делаешь в редюсере, сделай это за ранее, а потом в него уже пришли

Igor
31.01.2017
08:49:50
ничего страннго, у тебя эти айтемы с стейте в текущем, ты хочешь обновить стейт, присылаешь эти же айтемы что уже там, но завернутые в новый массив, и тут же в редюсере начинаешь их менять, в итоге выплевываешь стейт опять же с этими же айтемами. Вот фризер и ругается. Потому что где то для конечного компонента это будет выглядить так: пришел айтем, отрендерил айтем пришел айтем, ссылка таже, не стал рендерить. //Но содержимое то изменилось

тебе как раз и указывают на эту потенциальную проблему

хочешь поменять айтемы, делай новые

и пуш их экшеном в стейт

Gleb
31.01.2017
09:02:02
А как должно выглядеть удаление, если у нас есть список с ids и объект с ключ-значение, то есть мы фильтруем массив, копируем его, а как из объекта стереть ? ведь delete это mutable действие

Igor
31.01.2017
09:04:05
создать новый объект let old = { x: 1, y: 2, z: 3}; delete old.z; let newOb = { ... old }

Gleb
31.01.2017
09:06:38
Но тогда получается что мы и мутировали стейт сразу

как только вызвали delete

Если только копировать тогда сначало, а потом удалять

Igor
31.01.2017
09:07:08
нет, в новом сейтете ведь не будет ссылок на старый

мутацию он задетектить только если заметит ссылку в новом стейте, которая уже была в старом

Google
Igor
31.01.2017
09:07:54
и при этом объект поссылки разный будет

в примере выше будет два разных объект, ни где не пересекающихся по ссылкам

Gleb
31.01.2017
09:09:34
Догнал, спасибо!

function removeByKey (myObj, deleteKey) { return Object.keys(myObj) .filter(key => key !== deleteKey) .reduce((result, current) => { result[current] = myObj[current]; return result; }, {}); }

Нашел вот

Тоже вариант

Vitaliy
31.01.2017
09:39:49
ребят

как лучше

делать все отдельными компонентами

или например

в админкомпонент влаживать компоненты типа сирчюзер ченжюзер и тд

или лучше что бы в одной папке напиример компонентс все компоненты и потом собирать

или это никакой роли не играет?

Mikhail
31.01.2017
09:42:40
Если только копировать тогда сначало, а потом удалять
Ну так сделай Object.keys(old).filter(() => { }) и верни новый без него

Gleb
31.01.2017
09:47:21
чуть глубже только

а так да точняк

Vitaliy
31.01.2017
09:48:11
ау

хелп ребятки

Google
Mikhail
31.01.2017
09:52:56
Object.assign({}, state, { [id]: undefined })
В чем разница между undefined и delete o.x ?

Каїн
31.01.2017
09:54:32
delete более затратная операция так как меняет структуру объекта. Удаление значение вместо проперти куда быстрее

И ещё есть запары с ownProperty и prototype.sameNameProp

Igor
31.01.2017
10:01:03
хелп ребятки
разные подходы. Мне удобна семантичная структура, когда всё что связано с сущностью лежит рядом. Т.е. у меня к примеру есть раздел в системе отвечающий за настройки, следовательно под него создан модуль, каждая страница в разделе имеет свой компонент. Если есть директивы/компоненты/пайпы нужные только этому разделу они будут лежать там же. Если одна из нужных директив нужна ещё комуто, она уезжает в common модуль

Каїн
31.01.2017
10:04:07
Ага, темплейты в темплейтах

Vitaliy
31.01.2017
10:04:23
а то щас делаю проект, а он скотина такой большой, что когда мне дали доделывать я там потерялся потому, что там около 40 компонентов и еще и название непонятные )

Каїн
31.01.2017
10:04:23
Контроллеры все в папке контроллеров

Igor
31.01.2017
10:04:53
спасибо. Но где то читал, помню, что бы модули в папке модулей компоненты в компонентах типа так делать правильно... я че и спрашиваю)
у меня сейчас 16 модулей только в публичной части проекта, без админки, еще штук 17 common модулей. Если я начну компоненты в компоненты класть, меня в дурку увезут, потому что ни кто ничего найти не сможет

Vitaliy
31.01.2017
10:04:56
Ага, темплейты в темплейтах
а темплейты причем тут?)

Dima
31.01.2017
10:06:20
хелп ребятки
мне больше по душе подход модульный, когда файлы группируются по принадлежности к фиче, а не по типу. такой подход советуют профи еще начиная с 1го. а во втором angular-cli его применяет, так что имхо, это уже стандарт практически

Roman
31.01.2017
10:10:46
всем привет! кто-то юзал Ionic 2 для работы с Eddystone и IBeacon?

Dima
31.01.2017
10:12:27
ну я например хочу сделать так: components; modules; services; pipes; правильно будет?
да, только components - это совсем общие, в модулях так же компоненты есть. например, есть модуль calendar. в нем дофигища компонентов разных, но они имеют смысл только в контексте калдендаря, и экспортится из модуля календарь только один компонент, например, app-calendar, который все внутренние использует сам, а для использования буз календаря они не доступны

то же самое и для сервисов / пайпов. Общие в shared, а остальное все по модулям

Леонид
31.01.2017
13:02:41
всем привет) посоветуйте плес какой грид заюзать для Angular2+TypeScript+Webpack

Олег
31.01.2017
13:07:18
bootstrap? :D

Леонид
31.01.2017
13:08:27
?

Леонид
31.01.2017
13:19:50
да тут заказчик играет очком не может дизайн выдумать

Страница 162 из 179

Эта группа больше не существует Эта группа больше не существует