相关疑难解决方法(0)

从Angular 2服务创建和返回Observable

这更像是一个"最佳实践"问题.有三个球员:a Component,a Service和a Model.在Component被调用Service从数据库中获取数据.该Service方法是使用:

this.people = http.get('api/people.json').map(res => res.json());
Run Code Online (Sandbox Code Playgroud)

返回一个Observable.

Component可以只订阅Observable:

    peopleService.people
        .subscribe(people => this.people = people);
      }
Run Code Online (Sandbox Code Playgroud)

但是,我真正想要的是Service返回从数据库中检索Array of Model的数据创建的对象Service.我意识到Component可以在subscribe方法中创建这个数组,但我认为如果服务可以做到这一点并使其可用,那将会更清晰Component.

如何Service创建一个新的Observable,包含该数组,并返回?

observable angular

126
推荐指数
6
解决办法
18万
查看次数

Angular 2组件:如何处理循环输入和输出

现在的情况:

我有一个parent和一个child组件.

parent初始化child使用它的数据@Input.child当用户使用编辑数据时,通知父母@Output.并且由于数据是不可变的,因此child必须将数据与该通知一起发送.

parent得到通知时,它将检查提交的数据是否有效,然后将其设置(这也将新值传播到其他一些子组件).

问题:

当在其中设置新数据时parent,它当然也会将其提供给child刚刚提交数据的组件.这将触发child's ngOnChanges,然后触发重新绘制UI.

一些背景:

parent有几个不同的child组件,它们都依赖于相同的myItem数据,可以编辑这些数据,然后通知parent更改.


这是代码的简化版本,应该会显示问题.

父组件:

template:
    <child [input]="myItem" (output)="onMyItemChange($event)">

code:
    ngOnInit() {
        this.myItem = getDataViaHTTP();
    }

    onMyItemChange($event) {
        if($event.myItem.isValid()) {
            this.myItem = $event.myItem;
        }
    }
Run Code Online (Sandbox Code Playgroud)

子组件:

template:
    <input [(ngModel)]="myItem.name" (ngModelChange)="modelChange($event)">

code:
    @Input() input;
    @Output() output = new EventEmitter();

    myItem; …
Run Code Online (Sandbox Code Playgroud)

immutability event-handling angular2-template angular

8
推荐指数
1
解决办法
2443
查看次数