在Angular2/Typescript网站中,代码包含两个提供程序ProviderA和ProviderB。无法访问嵌套属性内的函数
提供者A试图调用方法:ProviderB.SomeProperty.SomeSubProperty.SomeMethod()
。发生这种情况时,会抛出一个错误,指出“对象不支持属性或方法'SomeMethod'”。
如果将相同的方法复制到ProviderB.SomeProperty
中,也会发生这种情况。例如,对于:ProviderB.SomeProperty.SomeMethod()
,TypeScript无法识别SomeMethod。
如果该函数被复制到顶级属性,则该函数调用起作用。 ProviderB.SomeMethod()
执行没有问题。
为什么TypeScript只识别它直接访问的对象上的函数?
还有一点需要注意的是:所有属性都可以用于每个ProviderB的子属性 - 只有函数不能被访问。
一个后续提示:所有这些代码在HTTP调用完成后执行。因此代码的一部分执行HTTP.Get(),并且当应用程序收到响应时,ProviderA将尝试调用ProviderB的嵌套方法。
您应该在这里提供一个最小的,完整的,可验证的例子。 –
函数是本地的 –
@RomanC这就是我在想的除了“如果函数被复制到顶层属性,函数调用工作” – Jan