List<string> someList = new List<string>{"1-30","20-100","21-23","34-80"};
List<string> newList = new List<string>();
foreach (var v in someList)
{
string[] s = v.Split('-');
newList.Add(s[0]);
}
这只是一个非常基本的例子,但这就是它的归宿。更确切地说:我们正在构建我们自己的日期选择器并扩展NgbDatepicker组件,该组件具有KeyMapService(这使用NgbDatepickerService)和本地NgbDatepickerService。
以下是组件的链接:https://ng-bootstrap.github.io/#/components/datepicker/examples
在我们的应用程序中,isStateEqual将始终返回false(即使在初始化组件之后),而在演示中,您可以在上面的链接中找到它,它将始终返回true(这应该是如何)。
任何人都知道为什么会这样?
提前致谢。
此致 丹尼斯
答案 0 :(得分:2)
在我的情况下,该服务实例化了两次,因为我使用两种不同的方法导入了该服务(我的IDE(VS2019)通过自动生成不正确的导入而在这里给我带来了误解):
import { Service } from '@mycompany/mymodule'
和
import { Service } from '../../../dist/@mycompany/mymodule/@mycompany-mymodule';
答案 1 :(得分:1)
必须在自举模块上定义应用程序范围的单例:
platformBrowserDynamic()
.bootstrapModule(AppModule)
@NgModule({
providers: [SingletonService1, SingletonService2],
bootstrap: [AppComponent]
})
export class AppModule {}
或通过在服务装饰器上设置providedIn: 'root'
:
@Injectable({
providedIn: 'root',
})
export class UserService {
}
答案 2 :(得分:0)
这取决于您为服务声明提供程序的位置 - 这决定了作用域。您没有在问题中指明您已经完成此操作 - 例如,尝试在AppModule中执行此操作。
答案 3 :(得分:0)
&#34;服务&#34;必须是Service2的公共财产。
@Injectable
export class Service2 {
service:Service
constructor(service: Service)
{
this.service=service;
}
}
答案 4 :(得分:0)
可视代码以这种方式自动导入我的服务
import { ConfigService } from 'src/app/services/config.services.js';
正确的方法是:
import { ConfigService } from 'src/app/services/config.services';