Angular 角5行为主体
我有一个表单,它接受Angular 角5行为主体,angular,angular5,angular-services,behaviorsubject,Angular,Angular5,Angular Services,Behaviorsubject,我有一个表单,它接受输入,我的API将使用输入来检索数据。根据angular,我可以使用@input或行为主体与子组件或无关组件共享此值 既然我的输入是一次性活动,为什么我不能使用带有私有变量的服务与不同的组件共享它,而不是使用@input和行为主体 我想说的是: 在模板中: <html> <body> EmployeeID <input type="text"> <button type="submit" (click) ="o
输入
,我的API将使用输入
来检索数据。根据angular,我可以使用@input
或行为主体
与子组件或无关组件共享此值
既然我的输入是一次性活动,为什么我不能使用带有私有变量的服务与不同的组件共享它,而不是使用@input
和行为主体
我想说的是:
在模板中:
<html>
<body>
EmployeeID <input type="text">
<button type="submit" (click) ="onsubmit()>Submit</button>
</body>
</html>
onsubmit() {
this.myservice.addData(inputValue)
}
private myinput
addData(input){
this.myinput.add(input)
}
并且在服务中:
<html>
<body>
EmployeeID <input type="text">
<button type="submit" (click) ="onsubmit()>Submit</button>
</body>
</html>
onsubmit() {
this.myservice.addData(inputValue)
}
private myinput
addData(input){
this.myinput.add(input)
}
这只是一个粗略的代码,而不是实际的代码。好吧,你当然可以……某种程度上。私有变量只能在它们自己的类中访问,所以它必须是一个公共变量 但是,您将失去
行为主体
的主要好处。如果该值与多个组件共享,则设置主题的好处在于,设置该值时,这些订阅服务器将以该值异步更新。否则,这些组件将不得不对该值进行null检查,而不是简单地以反应方式接收该值。这些组件还将收到对该值的更新,因此如果该值正在更新而不是保持静态,则行为主体
将变得更加有用
另一个注意事项是,在具有可观察的getter的服务上,将值设置为BehaviorSubjects
甚至privateBehaviorSubjects
,这是“商店”中常见的设计模式,或者是像这样的库所流行的有状态服务
Angular是一个基于RxJS构建的反应性很强的程序,但归根结底,在应用程序中使用Observable
s仍然是一种设计选择
此外,简单地拥有一个共享变量,通常最好的做法是使该值从服务外部不可变——要么只为该值编写一个getter,要么保持它的私有性,并且只能通过方法访问它。当然,你可以……某种程度上。私有变量只能在它们自己的类中访问,所以它必须是一个公共变量
但是,您将失去行为主体
的主要好处。如果该值与多个组件共享,则设置主题的好处在于,设置该值时,这些订阅服务器将以该值异步更新。否则,这些组件将不得不对该值进行null检查,而不是简单地以反应方式接收该值。这些组件还将收到对该值的更新,因此如果该值正在更新而不是保持静态,则行为主体
将变得更加有用
另一个注意事项是,在具有可观察的getter的服务上,将值设置为BehaviorSubjects
甚至privateBehaviorSubjects
,这是“商店”中常见的设计模式,或者是像这样的库所流行的有状态服务
Angular是一个基于RxJS构建的反应性很强的程序,但归根结底,在应用程序中使用Observable
s仍然是一种设计选择
此外,简单地拥有一个共享变量,通常最好的做法是使该值从服务外部不可变——要么只为该值编写一个getter,要么保持它的私有性,并且只能通过方法访问它。谁说你不能这样做?在我看来,这不利于良好的实践,但该代码非常有效。@MateuszWitkowski,因此,当我们必须使用行为主体时。。正确的用例是什么?如果你指的是最佳实践。。在那里我可以找到更多关于这方面的详细信息。当值有可能发生变化时,您会使用行为主体,并且您的下游组件需要得到关于该变化的通知。行为主体在此解释:谁说您不能这样做?在我看来,这不利于良好的实践,但该代码非常有效。@MateuszWitkowski,因此,当我们必须使用行为主体时。。正确的用例是什么?如果你指的是最佳实践。。我可以在这里找到更多关于这方面的详细信息。当值有可能发生变化时,您可以使用行为主体,并且您的下游组件需要得到关于该变化的通知。此处解释了行为主体: