如何从角度2中的另一个组件调用组件方法?

时间:2018-01-28 05:38:07

标签: angular typescript components right-to-left direction

我在我的角度2应用程序中有两个组件,我有一个md-select,其中一个包含两种语言。我想在选择其中一种语言之后改变整个项目的方向。

这是我的component1.html:

的一部分
def closeui():
    import os
    from win32com.client import GetObject

    WMI = GetObject('winmgmts:')
    processes = WMI.InstancesOf('Win32_Process')

    for p in WMI.ExecQuery('select * from Win32_Process where Name="cmd.exe"'):
        print("Killing PID:", p.Properties_('ProcessId').Value)
        os.system("taskkill /pid "+str(p.Properties_('ProcessId').Value))
    return True

这是component2.html的一部分:

<md-select class="data_font"  [(ngModel)]="currentLang" #langSelect="ngModel" (ngModelChange)="translate.use(currentLang)">
            <md-option *ngFor="let lang of translate.getLangs()" [value]="lang"><span class="data_font">{{ lang }}</span></md-option>
</md-select>

和component2.ts的一部分

<div #root="$implicit" dir="rtl" >
   ...//some html code here
</div>

我可以改变root和dir存在的方向,但我想从组件1中做到这一点。我怎么能这样做?有没有办法在component1中调用RTL()?

2 个答案:

答案 0 :(得分:0)

对于您的情况,您可以创建服务并保留该服务中语言属性的可观察性... Observable将帮助您在任何时间点订阅属性值的更改...并且您可以更改您根据您的服务 - propety的当前值... +点击链接了解有关可观测量的更多信息: https://toddmotto.com/rxjs-observables-observers-operators

基本上,如果您的两个组件需要共享相同的功能或数据,您应该将该功能转换为服务作为属性或方法...例如,假设您有一个购物车下拉列表(组件),用户可以增加或减少添加的产品的最终数量,并向用户或订单确认页面(另一个组件)提供相同的功能,因为两个组件共享相似的功能......应创建一个服务,可以处理任何来自任何请求的请求处理购物车事件的组件。 希望这个例子有所帮助。

答案 1 :(得分:0)

如果组件1调用组件2或相反,则可以使用ViewChild,因为其中一个组件将是子组件。如果您的组件位于同一级别或两个不同的组件上,则可以使用在两个组件构造函数中注入的服务来交换数据。一个调用服务,另一个调用数据