А что вы потом делаете с этими измененными данными? Ну то есть зачем вы вообще в дочернем компоненте меняете данные которые используются в родительском?
Это противоречит однонаправленному потоку данных. Если вы хотите в дочернем компоненте менять данные которые вы передаете через @Input() и потом эти измененные данные использовать в родительском компоненте, то вам нужно определить для дочерних компонентов @Output() и тригерить событие на дочернем элементе когда вы поменяли данные. При этом передавать в event копию объекта с данными. В родительском компоненте соответственно слушать событие изменения данных на дочерних компонентах и получать обновленные данные.
Такое решение предпочтительнее в рамках ангуляра, нежели изменять объект по ссылке.
Предположу, что в sref можно передавать только состояния с параметрами или без https://github.com/angular-ui/ui-router/wiki/Quick... Возможно ваш метод editRole в контроллере каким-то образом конфликтует с состоянием у которого такое же имя.
Попробуйте в контроллере вызывать $state.go(...) при клике на ссылку.
Используйте RouterModule https://angular.io/docs/ts/latest/api/router/index...
В корневом модуле используйте RouterModule.forRoot для инициализации Router сервиса. А в подмодулях RouterModule.forChild и добавляйте нужные вам роуты.
Каждый метод rxjs нужно отдельно подключать. Можно конечно сразу всю библиотеку подключить, но лучше только то что нужно.
В случае с .map будет вот так import 'rxjs/add/operator/map.js'