角色中的弦乐最佳实践2

Jam*_*s B 6 html string angular

我一直在学习Angular 2,并想知道什么是存储字符串的最佳实践.我在整个应用程序中使用各种字符串:有些字符串直接放在HTML元素中,例如,

// sample.html
<h1>This is my title</h1>
Run Code Online (Sandbox Code Playgroud)

其他字符串存储在绑定到的组件模型中,例如

// boundSample.html
<h1>{{myTitle}}</h1>

// boundSample.component.ts
import ...

@Component({
   templateUrl: 'boundSample.html';
})
export class BoundSampleComponent {
  myTitle = 'This is another title';
}
Run Code Online (Sandbox Code Playgroud)

我担心的是我的字符串遍布整个应用程序.来自C#/ WPF背景,我习惯将我的字符串保存在一个单独的位置(例如strings.xaml),我可以将其导入代码和UI标记(即用于WPF的XAML,用于Angular的HTML).这极大地有助于可维护性和国际化.

此外,快速浏览角度2的国际化建议使用i18n属性和i18n tool.这假设我的所有字符串都是用HTML定义的,但是如果我想在代码中使用其中的一些字符串呢?

如何以及在何处为Angular2中的字符串定义单个位置,以便我可以在代码中访问这些字符串并使用国际化工具?

smn*_*brv 3

你可以搜索一些工具,其中一些工具很好并且已经实现了你想要的东西。但是,如果您想按照以前的方式进行操作,只需执行以下操作:

  1. 将字符串存储在存储字符串的 XAML / JSON / YAML / 等文件中。如果您使用 webpack,请使用合适的加载器来为您处理这些内容。如果没有,您需要自己解析该文件。

  2. 创建一个能够从文件中获取信息的服务(我猜是在构造函数中),并具有一个根据字符串标记返回字符串的函数。

  3. 创建一个返回基于标记的字符串的管道。

  4. 使用 HTML 中的管道和打字稿文件中的服务。

i18n - 没问题,只需将语言传递给服务函数/订阅服务中可观察到的语言更改。

实现很简单。但请三思:您可以使用现有的解决方案。