假设我想构建一个angular2 +组件,从api中获取一些Center
,并显示其名称。
由于一些websocket连接,thing
可以随时更新。
这两种方法中哪一种更惯用?
thing
作为对象:基本上,组件订阅了websocket observable,并在必要时更新自己的thing
对象。如果使用了子组件,那么我们将传递thing
作为输入。
Thing
interface Thing { name: string }
@Component({
selector: 'app-thing',
template: '<h1> {{ thing?.name }} </h1>',
})
export class ThingComponent implements OnInit {
public thing: Thing
constructor(
private route: ActivatedRoute,
private thingService: ThingService,
) {}
public ngOnInit() {
this.route.params.subscribe(params => {
this.thingService.get(params.id).subscribe(({thing}) => {
this.thing = thing
})
})
this.thingService.socketObservable().subscribe(newThing => {
console.log('Thing has been updated !')
this.thing = newThing
})
}
}
作为主题:我们现在没有对象thing
,而是thing: Thing
(此处未显示,但我使用的是Subject而不是Observable,因此我可以在thing: Subject<Thing>
中完成方法)
在此版本中,模板使用ngOnDestroy
管道,子组件将接收可观察而不是async
对象。
Thing
据我所说,两个版本似乎都能正常工作。我怀疑thtey并不完全相同,但我缺乏知识决定我应该更喜欢第一个还是第二个。
有什么想法吗?
答案 0 :(得分:0)
我认为在这种情况下你需要使用.table-responsive{
overflow-x:scroll;
margin: 0 !important;
padding-bottom: 0 !important;
}
,因为Socket的“流”性质。但通常这个问题与您喜欢的编码风格更相关。如果您对反应式编程感到满意,那么您可能需要使用反应式方法来解决问题