我有我的Vue组件,它将一组对象作为道具.我经常使用道具验证,尤其是"默认"值功能.
在这种情况下,我有:
props: {
items: Array
}
Run Code Online (Sandbox Code Playgroud)
但我希望它能在Typescript或React中使用:
props: {
items: Array.of(
{key: {type: String, default: 'myText'}}
)
}
Run Code Online (Sandbox Code Playgroud)
等等
有可能实现吗?否则我需要使用计算数据作为map来设置默认值
管道有两种使用方式
@Param('foo', MyPipe)它MyPipe在框架中创建
或者我可以做@Param('foo', new MyPipe())。
解决方案 1 使我能够使用@Injectable我需要的内容(例如,我注入 db 来从数据库解析用户)
但是,我无法访问构造函数,因此无法配置管道。
在场景2中我可以配置它,但我不能使用Injectable
有没有办法例如在这个范围内使用一些工厂,这样我就可以像在模块中创建它一样构造管道?
建议使用 Angular Renderer2 以编程方式操作 DOM。
在我的指令中,我采用了一些el.nativeElement.innerText,转换此文本并希望将其添加到我的元素中:
const text = renderer.createText(`${el.innerText}%`);
renderer.appendChild(el, text);
问题在于el- 它已经有了文本,所以它在它之后附加了转换后的文本。
我检查了 Renderer2 文档,似乎我可以在removeChild()不将引用传递给 child 的情况下使用,所以我不能先使用 Renderer2 来清除组件?
在这种情况下,实现它的唯一方法是使用innerText = ''渲染器方法之前,这使其毫无意义。
我习惯了 React 方法,我基本上可以在任何地方注入任何东西。
我在 Angular 中有一个傻瓜Button或app-button组件。它是内联块(:host类),所以它的宽度取决于内容。在这种情况下,我不能像display: block或设置宽度一样覆盖它的参数。我可以通过添加新的@Input每个参数 ( [display], [width])来手动完成,但这并不是很好。
我想要的行为是此组件上的输入/指令,以向子组件内部提供显式注入类。
在 React 中,我只需添加带有类名的 prop 并分配它或传递一些内联样式,具体取决于我使用的样式系统。
有没有办法/lib/util 来处理这个问题?
是否可以有一个具有强类型公共方法但没有实现它们的抽象类?我知道它是一个接口,但我不能将接口用于依赖注入作为 Angular 中的令牌。我需要一个结构供其他类实现。但是,如果我这样做:
abstract class AbstractService {
someMethod(): Observable<SomeType> {}
}
Typescript 会静态地检查它并出错,因为它不返回声明的类型。
我想我可以在编译器代码中添加一些注释来防止 TS 检查,但这似乎很hacky。
有没有办法阻止 typescript 进行此检查并进行写入?我的架构的重要组成部分是用于 DI 的服务层系统