我有这个表单,通过API服务,我可以从特定用户获取数据,所以我想将该数据发送到另一个组件,然后使用* ngFor提取它,但我真的不知道任何关于怎么做。 (我必须说,其他组件不是父视图中的子组件)
答案 0 :(得分:2)
使用服务:
class Program
{
const string Content = @"<?xml version='1.0' encoding='utf-8'?>
<Data xmlns:a='whatever'>
<DeviceId>Sometext</DeviceId>
<Inputs>
<a:ImageInput>
<a:Cal>
<a:Volt1></a:Volt1>
<a:Volt2></a:Volt2>
</a:Cal>
<a:Name>Name1</a:Name>
</a:ImageInput>
<a:ImageInput>
<a:Cal>
<a:Volt1></a:Volt1>
<a:Volt2></a:Volt2>
</a:Cal>
<a:Name>Name2</a:Name> <!-- Need to change this element -->
</a:ImageInput>
</Inputs>
</Data>";
static void Main(string[] args)
{
var xml = new XmlDocument();
xml.LoadXml(Content);
XmlNamespaceManager mgr = new XmlNamespaceManager(xml.NameTable);
mgr.AddNamespace("a", "whatever");
XmlElement name2 = (XmlElement)xml.SelectSingleNode("/Data/Inputs/a:ImageInput/a:Name[text()='Name2']", mgr);
if (name2 != null)
{
name2.InnerText = "A new value";
}
Console.WriteLine(xml.InnerXml);
}
}
在您的父组件中:
@Injectable()
export class DataService {
private subject = new Subject<any>();
setData(message: string) {
// just an example:
this.subject.next({ text: message });
}
getData(): Observable<any> {
return this.subject.asObservable();
}
}
在您的其他组件中,您可以订阅:
this.dataService.setData(something);
不要忘记组件中的构造函数:
this.dataService.getData().subscribe(data => {
// do stuff with the data, for example:
this.myData = data;
);
另一种解决方案可能是使用Ngrx:https://github.com/ngrx/platform