Angular 5 - 将数据传递给另一个组件

时间:2018-02-07 09:16:07

标签: angular typescript

我有这个表单,通过API服务,我可以从特定用户获取数据,所以我想将该数据发送到另一个组件,然后使用* ngFor提取它,但我真的不知道任何关于怎么做。 (我必须说,其他组件不是父视图中的子组件)

1 个答案:

答案 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