小编Ham*_*our的帖子

角度6依赖注入

在最新版本的Angular 6中,使用providedIn服务元数据中的属性在模块中注册服务:

@Injectable({
  providedIn: 'root',
})
export class HeroService {}
Run Code Online (Sandbox Code Playgroud)

但是文档仍然指的是providers在模块元数据中注册模块数组中的服务,就像我们在Angular 5中一样:

@NgModule({
  providers: [HeroService],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

那么应该使用哪种方法使注入器知道它应该注入的服务&模块提供者的数组方法是否会被弃用?

javascript typescript angular-cli angular angular6

59
推荐指数
2
解决办法
3万
查看次数

如何更新依赖注入令牌值

角度依赖注入允许您使用令牌而不是服务类注入字符串,函数或对象.

我在我的模块中声明它是这样的:

providers: [{ provide: MyValueToken, useValue: 'my title value'}]
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

constructor(@Inject(MyValueToken) my_value: string) {
  this.title = my_value;
}
Run Code Online (Sandbox Code Playgroud)

但是,如何更新组件中的值并让其他组件每次都获得新值?换句话说,我想模拟使用类似a BehaviorSubject来发射和接收值的功能.

如果这不可能,那么如果它们仅提供静态数据,那么这些注入令牌值的用途是什么,而我可以简单地在我的组件中声明静态值并直接使用它.

typescript angular-services angular-decorator angular angular-di

10
推荐指数
3
解决办法
3854
查看次数

如何在一天中的特定时间停止服务?

我已经能够在每天的特定时间开始服务,但我想做同样的事情停止但我不知道如何.


这是我用来使用AlarmManager启动服务的代码.
注意:我是Android dev的新手,因此提供完整的评论代码将受到高度赞赏.

 Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    PendingIntent pi = PendingIntent.getService(getApplicationContext(), 0,
            new Intent(getApplicationContext(), Service.class), PendingIntent.FLAG_NO_CREATE);
    AlarmManager am = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);
Run Code Online (Sandbox Code Playgroud)

android android-intent android-service android-studio

9
推荐指数
1
解决办法
6826
查看次数

必需的HTML5输入不起作用 - Angular 4

我正在尝试使用HTML5"required"属性验证简单的角度4表单的输入,但验证不起作用.表单在屏幕上正确加载,一切正常,但表单验证除外.

我正在使用"Materialise-css"布局进行布局.

的index.html

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <title>Projeto teste</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>

<body>
  <header>
    <!--Navbar-->
    <nav>
      <div class="nav-wrapper">
        <form>
          <div class="input-field">
            <input id="search" type="search" required>
            <label class="label-icon" for="search"><i class="material-icons">search</i></label>
            <i class="material-icons">close</i>
          </div>
        </form>
      </div>
    </nav>

    <!--SideNav-->
    <ul id="slide-out" class="side-nav">
      <li>
        <div class="userView">
          <div class="background">
            <img src="images/office.jpg">
          </div>
          <a href="#!user"><img class="circle" src="images/yuna.jpg"></a>
          <a href="#!name"><span class="white-text name">John Doe</span></a>
          <a href="#!email"><span class="white-text email">jdandturk@gmail.com</span></a>
        </div>
      </li>
      <li><a href="#!"><i class="material-icons">cloud</i>First Link With Icon</a></li>
      <li><a href="#!">Second …
Run Code Online (Sandbox Code Playgroud)

validation html5 angular

8
推荐指数
1
解决办法
7385
查看次数

如何使用标签设置多个滑动视图的默认选项卡?

我真的被卡住了.我在我的主要活动中使用选项卡进行了四次滑动视图,但我想要的是当用户打开应用程序时,它会自动显示第二个选项卡而不是第一个选项卡.

这是我的MainActivity.java

public class MainActivity extends FragmentActivity implements
    ActionBar.TabListener {

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "First Tab", "Second Tab", "Third Tab", "Fourth Tab" };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Initilization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    /**
     * on swiping the viewpager make respective …
Run Code Online (Sandbox Code Playgroud)

tabs android android-viewpager swipeview android-studio

7
推荐指数
1
解决办法
1万
查看次数

禁用不使用 formControlName 进入角度 2 中的模型驱动表单?

我正在使用模型驱动模板。如果未选中复选框,我想禁用输入。但它不适用于 formControlName。我尝试了三种方式。给这里

 1.disabled="!filterForm.value.customer_limit"
 2.[disabled]="!filterForm.value.customer_limit"
 3.[readonly]="!filterForm.value.customer_limit"
Run Code Online (Sandbox Code Playgroud)

这是我的 HTML 代码:

 <md-checkbox [checked]="filterForm.value.customer_limit" formControlName="customer_limit">
                        <md-input-container class="full-width">
                            <input mdInput
                                   formControlName="customer_limit_input"
                                   [disabled]="!filterForm.value.customer_limit"
                                   placeholder="Limit to customers">
    </md-input-container>
    </md-checkbox>
Run Code Online (Sandbox Code Playgroud)

有任何想法请帮助我。谢谢

angular

7
推荐指数
1
解决办法
2万
查看次数

md-autocomplete md-require-match 失去焦点

我有一个带有 md-require-match=true 和验证消息的自动完成控件(Angular Material version 1.1.2)

                                <md-autocomplete required
                              md-no-cache="true"
                              md-select-on-match = "true"
                              md-selected-item="vm.selectedItem"
                              md-search-text="vm.searchText"
                              md-items="country in vm.querySearch(vm.searchText)"
                              md-item-text="country.nm"
                              md-min-length="2"
                              md-selected-item-change="vm.updateOrgCountry(country.cd)"
                              md-require-match = "true"
                              md-input-name="countryField"
                              md-match-case-insensitive = "true"
                              md-floating-label="Country">
                              <md-item-template>
                                 <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{country.nm}}</span>
                              </md-item-template>
                              <md-not-found>
                                    No Countries matching "{{vm.searchText}}" were found.
                              </md-not-found>
                              <div ng-messages="orgForm.countryField.$error">
                                <div ng-message="required"></div>
                                <div ng-message="md-require-match">Country not found.</div>
                              </div>
                           </md-autocomplete>
Run Code Online (Sandbox Code Playgroud)

当我第一次进入控件并开始输入时,一切都按预期工作。如果我没有从列表中选择一个项目,然后离开控件,我会收到“未找到国家/地区”错误消息。

但是,如果我返回控件并再次开始输入,则每次按下按键后都会收到“未找到国家/地区”错误消息,直到我从列表中选择了某些内容。我不希望出现这种行为,因为用户在输入数据时应该会看到错误。

有没有办法将自动完成控件配置为仅在控件失去焦点时验证匹配?

angularjs angularjs-material

6
推荐指数
0
解决办法
536
查看次数

角度2改变位置固定在滚动上

我有一个左侧边栏,位置固定.我想要实现的是,当我滚动大约50或60像素时,左侧边栏的位置应该更改为固定.

左sidebar.component.ts

import { Component } from '@angular/core';

@Component({
  moduleId: module.id,
  selector: 'left-sidebar',
  templateUrl: 'left-sidebar.html',
  styleUrls: ['left-sidebar.scss']
})
export class LeftSideBarComponent {
}
Run Code Online (Sandbox Code Playgroud)

左sidebar.html

<div class="col-sm-2 left-nav">

</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.left-nav {
  position: absolute;
  background: #424242;
  height: 100%;
  overflow: auto;
  padding: 0;
  z-index: 1;
}
Run Code Online (Sandbox Code Playgroud)

如何在滚动条上将左侧边栏的位置从绝对位置更改为固定位置?

css angular2-template angular

3
推荐指数
1
解决办法
1万
查看次数